脚本实现登陆滑块

脚本实现登陆滑块

仅供学习参考,简单操作
在这里插入图片描述

你知道吗,滑动验证码居然是为了验证人类比机器人蠢而设计的。
你以为自己快速、准确地滑动拼图、对齐图案,才被允许通过,系统还说你超越了99%的用户,夸你“比闪电还快”,但实际上,机器人画得比你又快又好,系统觉得你“这么笨,肯定不是机器人”,才通过验证。
很多得知此消息的网友表示“谢谢有被侮辱到”“显得我以前小心翼翼对准的样子很心酸”。
部分代码展示:



with open('./test.js', 'r', encoding='utf-8') as f:
    js_code = f.read()
ctx = execjs.compile(js_code)


headers = {
    'Origin': 'https://login.dangdang.com',
    'Referer': 'https://login.dangdang.com/?returnurl=https%3A%2F%2Fwww.dangdang.com%2F',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
}




# 判断缺口位置 返回缺口的X坐标
def identify_gap(bg,tp,out):
    '''
    bg: 背景图片
    tp: 缺口图片
    out:输出图片
    '''
    # 读取背景图片和缺口图片
    bg_img = cv2.imread(bg) # 背景图片
    tp_img = cv2.imread(tp) # 缺口图片
    
    # 识别图片边缘
    bg_edge = cv2.Canny(bg_img, 100, 200)
    tp_edge = cv2.Canny(tp_img, 100, 200)
    
    # 转换图片格式
    bg_pic = cv2.cvtColor(bg_edge, cv2.COLOR_GRAY2RGB)
    tp_pic = cv2.cvtColor(tp_edge, cv2.COLOR_GRAY2RGB)
    
    # 缺口匹配
    res = cv2.matchTemplate(bg_pic, tp_pic, cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) # 寻找最优匹配
    
    # 绘制方框
    th, tw = tp_pic.shape[:2] 
    tl = max_loc # 左上角点的坐标
    br = (tl[0]+tw,tl[1]+th) # 右下角点的坐标
    cv2.rectangle(bg_img, tl, br, (0, 0, 255), 2) # 绘制矩形
    cv2.imwrite(out, bg_img) # 保存在本地
    
    # 返回缺口的X坐标
    return tl[0] 

# 调整底图大小并保存
def resize_and_save_image(path ,content, size):
    image = Image.open(BytesIO(content))
    image = image.resize(size)
    image.save(path)

解析

该文件实现了一个用于登录系统的脚本,结合了图像处理和网络请求。

  1. 导入模块:

    • 使用 PIL 处理图像,requests 进行HTTP请求,execjs 执行JavaScript代码,cv2 进行图像处理。
  2. 加载JavaScript代码:

    • .js 文件中读取并编译JavaScript代码,使用 execjs 运行。
  3. 设置HTTP头部信息:

    • 定义了请求头,包括 OriginRefererUser-Agent,模拟浏览器请求。
  4. 主要函数:

    • identify_gap(bg, tp, out): 使用OpenCV识别图像中的缺口位置,并绘制矩形框。

    • resize_and_save_image(path, content, size): 调整图像大小并保存。

    • ranKey(data): 获取随机密钥。

    • getSlidingVerifyCode(data): 获取滑动验证码。

    • save_captcha_img(url): 保存验证码图片。

    • checkSlidingVerifyCode(data): 校验滑动验证码。

    • accountLogin(data): 模拟登录。

  5. 主程序流程:

    • 获取用户名和加密后的密码。

    • 获取请求参数和随机密钥。

    • 获取滑动验证码并保存相关图片。

    • 识别缺口位置,生成点信息。

    • 校验滑动验证码,并发送最终登录请求。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 06:16:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 06:16:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 06:16:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 06:16:03       20 阅读

热门阅读

  1. 调用plt函数报错not ‘KeyboardModifier’

    2024-06-08 06:16:03       11 阅读
  2. 理解和实现 LRU 缓存置换算法

    2024-06-08 06:16:03       8 阅读
  3. 【Numpy】04 深入理解NumPy的高级索引技术

    2024-06-08 06:16:03       7 阅读
  4. MYSQL内存占用查询语句

    2024-06-08 06:16:03       6 阅读
  5. springboot防止表单重复提交

    2024-06-08 06:16:03       9 阅读
  6. 0104__Linux 中 nm 命令简介

    2024-06-08 06:16:03       8 阅读
  7. 相对路径vs绝对路径 python文件的添加与删除

    2024-06-08 06:16:03       10 阅读
  8. QT的窗口坐标和全局坐标

    2024-06-08 06:16:03       8 阅读
  9. mongodb 增删改查

    2024-06-08 06:16:03       8 阅读
  10. 在docker中运行mysql容器

    2024-06-08 06:16:03       9 阅读