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的全部路径也可 ...
随机推荐
- Numa解释
原路径:http://www.sohu.com/a/126402403_609500 内容概要 今天的文章我们将简单学习下Hyper-V如何通过NUMA(Non-Uniform Memory Acce ...
- java字符串排序(数字,字母,汉字等组合排序)
package cn.cnnho.backstage.utils; import java.util.ArrayList;import java.util.Arrays;import java.uti ...
- GaussDB数据dump实现完全同步
问题背景:搭建服务后端容灾集群,服务正常时容灾DB需要从业务DB完全同步数据,服务异常时,容灾DB停止抽取数据,自动从探针采集业务数据. 解决方案:常用的有两种思路,一是从服务后端定时每天拉取业务DB ...
- 用CNN及MLP等方法识别minist数据集
用CNN及MLP等方法识别minist数据集 2017年02月13日 21:13:09 hnsywangxin 阅读数:1124更多 个人分类: 深度学习.keras.tensorflow.cnn ...
- java IO流的概念与分类
DataInputStream && ObjectInputStream 示例 https://blog.csdn.net/hoho_12/article/details/520543 ...
- POJ 1734 Sightseeing trip(Floyd)
题目传送门 题目中文翻译: Description 桑给巴尔岛上的阿德尔顿镇有一家旅行社,它已决定为其客户提供除了许多其他名胜之外的景点.为了尽可能地从景点赚取收入,该机构已经接受了一个精明的决定:有 ...
- 控制台输出<迷你DVD管理>
使用顺序.选择.循环.跳转语句 数组 功能实现菜单显示和切换 输入的数字不符合要求直接退出程序 用户可以选择新增.查看. 删除.借出.归还.退出 思路分析 使用switch语句实现菜单选择 使用do- ...
- setTimeout()执行时序
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- [Algo] 280. Sort With 2 Stacks
Given an array that is initially stored in one stack, sort it with one additional stacks (total 2 st ...
- dubbo通信协议对比
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档 http://dubbo.io/User+Guide-zh.htm dubbo共支持如下几种通信协议: ...