京东自动登录

注:本文所做操作皆以京东web为例

包含:xpath,splinter,ocr

遇到的坑:

  1. 登录页面通过查看网页元素,能看到账户,密码唯一id,但是执行

    1
    2
    browser.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的更多相关文章

  1. seckill(1)秒杀系统主要步骤

  2. SSM框架学习之高并发秒杀业务--笔记5-- 并发优化

    前几节终于实现了这个高并发秒杀业务,现在问题是如何优化这个业务使其能扛住一定程度的并发量. 一. 优化分析 对于整个业务来说,首先是分析哪些地方会出现高并发,以及哪些地方会影响到了业务的性能.可能会出 ...

  3. mysql新建表示,时间字段timetamp碰到的问题

    在mysql中创建表时,在新加的字段时间上,碰到下面的问题: 建表语句如下: CREATE TABLE seckill( seckill_id bigint NOT NULL AUTO_INCREME ...

  4. 用Maven新建Web项目时报错

    在cmd下,用mvn命令 mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -DarchetypeArtifactId=m ...

  5. 基于redis分布式锁实现“秒杀”

    转载:http://blog.5ibc.net/p/28883.html 最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路. 业务场 ...

  6. android创建桌面快捷方式(启动目标非项目的启动页)

    1.布局文件中,目标Activity加入以下filter <intent-filter>                  <action android:name="an ...

  7. 慕课网Java高并发秒杀学习

    课程地址:http://www.imooc.com/learn/587 一个很好:spring,springMVC,mybatis,bootstrap,jQuery,mysql,Restful学习案例 ...

  8. MyBatis dao层 方法传参

    MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled">       INSER ...

  9. MyBatis中的resultType和resultMap

    MyBatis的查询在进行映射的时候,返回值类型可以使用resultType同时也可以使用resultMap.前者表示直接的返回值类型,一般是domain名称,当然这里可以写domain的全部路径也可 ...

随机推荐

  1. gradle配置多个代码仓库repositories

    repositories { mavenCentral() maven { url "https://jitpack.io" } maven { url "http:// ...

  2. Python笔记_第四篇_高阶编程_进程、线程、协程_1.进程

    1. 多任务原理: 现代操作系统,像win,max os x,linux,unix等都支持多任务. * 什么叫做多任务? 操作系统可以同时运行多个任务. * 单核CPU实现多任务原理? 操作系统轮流让 ...

  3. 完整注册登陆php源码,附带session验证。

    1.首先先写表单页面login.html. <!DOCTYPE html> <html lang="en"> <head>     <me ...

  4. geodjango七日学习笔记 (7.30整理本地笔记上传到网络)

    第一天进行到现在,在开端的尾巴,想起来写一个学习笔记, 开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7   接下来要做的是新建一个geodjango项 ...

  5. 实操windows2008搭建IIS php mysql

    一.IIS的安装直接略过 二.主要记录PHP.MYSQL环境的搭建 1.本次环境搭建使用的环境版本号对应如下: 1.PHP:PHP 7.2 (7.2.28) 下载地址:https://windows. ...

  6. 实现迭代器(\_\_next\_\_和\_\_iter\_\_)

    目录 实现迭代器(__next__和__iter__) 一.简单示例 二.StopIteration异常版 三.模拟range 四.斐波那契数列 实现迭代器(__next__和__iter__) 一. ...

  7. 微信小程序java8 java7 java6 encryptedData 解密 异常处理

    使用java8 java7  java6 解密微信小程序encryptedData可以回遇到一些错误 1.java.security.NoSuchAlgorithmException: Cannot ...

  8. Window命令行切换命令

    Windows 命令行切换目录 特别注意:切换到其它盘符不需要 cd 命令 1. 切换到 C 盘根目录 打开终端 cmd 后,输入cd C:\(一定要加上后面的反斜扛) 2.切换到 C 盘子目录 打开 ...

  9. 17.3.16---python内建函数

    内置函数,无需import,任何时候都可以直接被使用 1------ Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍 ...

  10. java select单线程 服务器

    package com.Select; /** *select单线程 服务器 **/ import java.io.IOException; import java.net.InetSocketAdd ...