IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> selenium模拟破解京东滑块验证码 -> 正文阅读

[开发测试]selenium模拟破解京东滑块验证码

selenium模拟破解京东滑块验证码

原理:利用selenium模拟登陆京东,在账号密码多次输入错

误的情况下,网站会跳出滑块验证码,设计好代码自动下载验

证码原图,通过cv2识别计算出滑动距离。

话不多说,源码如下:


import time
import requests
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import cv2
import os,base64
from urllib import request
#账号密码随便输,多试几次会跳出验证码
id_v='2725656674' #京东账号
password_v='13049267664'#京东密码
driver=webdriver.Chrome()
wait=WebDriverWait(driver,3)
driver.get('https://www.jd.com/')






#加速度
'''
def get_tracks(x):
    v=0
    t=0.3
    tracks=[]
    current=0
    mid=x*4/5
    while current<x:
        if current<mid:
            a=2
        else:
            a=-3
        v0=v
        s=v0*t+0.5*a*(t**2)
        current+=s
        tracks.append(round(s))
        v=v0+a*t
    return tracks
'''

#界面点击账号登录
enter=driver.find_element_by_xpath('//*[@id="ttbar-login"]/a[1]').click()#//*[@id="msShortcutLogin"]/span
#点击账号登录
login=driver.find_element_by_xpath('//*[@id="content"]/div[2]/div[1]/div/div[3]/a').click()

#获取用户名和密码
id=driver.find_element_by_xpath('//*[@id="loginname"]')
id.send_keys(id_v)

password=driver.find_element_by_xpath('//*[@id="nloginpwd"]')
password.send_keys(password_v)
#获取登录按钮
btn=driver.find_element_by_xpath('//*[@id="loginsubmit"]').click()
y=0
while True:

    #验证码原图
    jd_bj=driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[1]/img')
    #滑块图
    jd_hk=driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[2]/div[2]/img')
    #滑块
    ele_hk=driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[2]/div[3]')
    #提取src属性
    jd_img=jd_bj.get_attribute('src')
    hk_img=jd_hk.get_attribute('src')
    #print(jd_img)
    #print(hk_img)

    request.urlretrieve(jd_img, "jd_bj_img.png")
    request.urlretrieve(hk_img, "hk_bj_img.png")


    def juli():

        bj_rgb = cv2.imread('jd_bj_img.png')
        bj_gray = cv2.cvtColor(bj_rgb, cv2.COLOR_BGR2GRAY)
        hk_rgb = cv2.imread('hk_bj_img.png')
        res = cv2.matchTemplate(bj_rgb, hk_rgb, cv2.TM_CCOEFF_NORMED)
        lo = cv2.minMaxLoc(res)
        # print(lo[2][0])
        return lo[2][0] #识别返回滑动距离



   
    print("下载成功!")
    x = juli()
    # 278:网页原图像素
    # 360:下载后尺寸
    x = int(x * 278 / 360)

    #滑动滑块
    #seleniu滑动
    action=ActionChains(driver)
    #按住滑块元素
    action.click_and_hold(ele_hk).perform()
    #滑动距离
    #tracks=get_tracks(x)
    #for track in tracks:

    action.move_by_offset(x,0).perform()
    time.sleep(10)
    # 松开滑块
    action.release(ele_hk).perform()
    time.sleep(2)
    y=y+x
    if y==x:

        break
    else:
        y=0


        try:
            driver.find_element_by_xpath('//*[@id="JDJRV-wrap-loginsubmit"]/div/div/div/div[1]/div[1]/div[2]').click()
            time.sleep(1)
        except Exception as e:
            break


为了测试,花了几天的时间,奈何技术有限,虽然滑块能成功对上缺口,但就是登陆不了。

京东的反爬技术,估计能识别自动登录,但通过这次实践,对爬虫技术也有了一个更深度的了解。

不管什么网站,破解原理一样。像qq空间,豆瓣这种滑动距离不变,而且没有严格的反爬,就容易的多。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:53:42  更:2021-11-09 19:56:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码