zoukankan      html  css  js  c++  java
  • seckill

    京东自动登录

    注:本文所做操作皆以京东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
  • 相关阅读:
    [转] Actor生命周期理解
    [转] Linux History(历史)命令用法 15 例
    [转] CDH6 安装文章链接收集
    [转] org.scalatest.FunSuite Scala Examples
    [转] Mock以及Mockito的使用
    关于 maven 打包直接运行的 fat jar (uber jar) 时需要包含本地文件系统第三方 jar 文件的问题
    [转] flume使用(六):后台启动及日志查看
    [转] etcd 搭建与使用
    [转] 2018年最新桌面CPU性能排行天梯图(含至强处理器)
    让 Linux grep 的输出不换行
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12370762.html
Copyright © 2011-2022 走看看