seckill
京东自动登录
注:本文所做操作皆以京东web为例
包含:xpath,splinter,ocr
遇到的坑:
登录页面通过查看网页元素,能看到账户,密码唯一id,但是执行
1
2browser.fill("loginname", name) # 填写账户密码
browser.fill("nloginpwd", passwd)报错信息
1
selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Element is not currently interactable and may not be manipulated
实际原因如下
1
元素你看得到,但是代码要操作的元素是跟随鼠标变更样式的,或者其他条件实时变更的,导致代码不能“看见”。这种情况就需要通过js操作dom元素来适应场景。
经过分析,查看网页源代码可以看到,实际被js代码渲染,可能更改,所以一定要保持页面如真是用户操作一样,方可。所以添加如下代码,解决问题
1
2
3大专栏 seckill="code"> browser.click_link_by_text("账户登录")#使login,passwd可见
browser.fill("loginname", name)
browser.fill("nloginpwd", passwd)2.京东验证吗
注:京东验证码阻塞了俩天,通过搜索知道京东验证码由三部分组成;
1
acid,uid,yys三部分拼装而成,acid,uid为固定值,可以从页面直接抓取,yys为随机生成的13为字符串,拼装而成的验证码例如url=https://authcode.jd.com/verify/image?a=1&acid=b6ff1eca-e3e5-4692-904b-be35da5f0752&uid=b6ff1eca-e3e5-4692-904b-be35da5f0752&yys=5436761901589
过程1. requests 请求url获取一直ok,通过requests返回值result, 查看result.text发现返回的为京东首页的html网页内容,显然有误,查看返回302代码,重定向。定位问题,应该是访问url,ok.requests headers 有误。然后添加了cookie,返回200
过程2. 返回200,查看返回数据,发现一堆乱码,以为是编码问题,打印result.encoding,返回None,应该不是编码问题。经搜索,返回如果是图片,应该是二进制数据,所以乱码。尝试保存数据到硬盘,发现验证码图片保存成功。
过程3. 调用百度ocr接口,实现验证码识别,准确度不高,有待提高
代码地址:
1 |
https://github.com/wanderingpuppy/seckill |
seckill的更多相关文章
- seckill(1)秒杀系统主要步骤
- SSM框架学习之高并发秒杀业务--笔记5-- 并发优化
前几节终于实现了这个高并发秒杀业务,现在问题是如何优化这个业务使其能扛住一定程度的并发量. 一. 优化分析 对于整个业务来说,首先是分析哪些地方会出现高并发,以及哪些地方会影响到了业务的性能.可能会出 ...
- mysql新建表示,时间字段timetamp碰到的问题
在mysql中创建表时,在新加的字段时间上,碰到下面的问题: 建表语句如下: CREATE TABLE seckill( seckill_id bigint NOT NULL AUTO_INCREME ...
- 用Maven新建Web项目时报错
在cmd下,用mvn命令 mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -DarchetypeArtifactId=m ...
- 基于redis分布式锁实现“秒杀”
转载:http://blog.5ibc.net/p/28883.html 最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路. 业务场 ...
- android创建桌面快捷方式(启动目标非项目的启动页)
1.布局文件中,目标Activity加入以下filter <intent-filter> <action android:name="an ...
- 慕课网Java高并发秒杀学习
课程地址:http://www.imooc.com/learn/587 一个很好:spring,springMVC,mybatis,bootstrap,jQuery,mysql,Restful学习案例 ...
- MyBatis dao层 方法传参
MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled"> INSER ...
- MyBatis中的resultType和resultMap
MyBatis的查询在进行映射的时候,返回值类型可以使用resultType同时也可以使用resultMap.前者表示直接的返回值类型,一般是domain名称,当然这里可以写domain的全部路径也可 ...
随机推荐
- 提高js性能的方法
1.文档瘦身 (1)删除注释(版权及法律声明部分应保留),运行时不需要注释. (2)删除制表符.空格和换行符,这些只是为了便于程序的维护,但是与执行无关. (3)替换长的变量名为短的变量名. (4)使 ...
- Django2.0——实现简易登陆、注册
思路: 实现简易的登陆.注册,我们至少需要三个HTML页面,一个主页面.一个登陆界面.一个注册界面.为了存储和校验用户的账号和密码,我们需要写一个模型类(用于映射到数据库).两个form类(一个登陆. ...
- 使用MySQL传输表空间迁移数据
对于大表的迁移,如果使用mysqldump进行导出,然后重新导入到其它环境,速度是非常缓慢的.如果使用传输表空间,则可以解决这个问题. 测试使用传输表空间迁移表,基础环境如下: 源库 目标库 IP ...
- Hibernate(三)--关联映射
1.多对一 product----category category.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibern ...
- 关于gc中对象回收算法的认识
之前学习java时,笔者看到很多学习资料说,gc判断object存活与否的算法是:给对象添加一个引用计数器,每当有一处地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,当对象计数清零时,对象 ...
- hasura graphql-engine v1.2.0 beta 版本
hasura graphql-engine v1.2.0 提供了一个很不错的功能action,这个也是目前其他graphql 没有hasura 强大的 地方,使用action 我们可以更好的扩展has ...
- 基于serverless快速部署前端项目到腾讯云
腾讯云 COS 组件,可以快速部署静态网站页面到对象存储 COS 中,并生成域名供访问. 安装 首先要安装 serverless 组件 npm install -g serverless 在项目的根目 ...
- Python列出文件夹中的文件
几乎所有的关于操作系统的内容可以在python 官方文档中找到:https://docs.python.org/3/library/os.html#module-os 其中os.path被单独列出:h ...
- ZJNU 1205 - 侦探推理——高级
双层枚举嫌疑犯与当日是星期几,统计真话与假话是否满足题意 注意 fake<=N&&fake+neutral>=N 即假话数量不大于N,假话加上没用的废话数量不小于N (注意 ...
- 追踪tracking
追踪 追踪部分的主要思路是在当前帧和(局部)地图之间寻找尽可能多的对应关系,来优化当前帧的位姿. 作者在追踪这部分主要用了几种模型:运动模型(Tracking with motion model).关 ...