本文旨在经验交流,如若侵犯利益,请联系删除。

2020.04.13

自古评论区出大神,我也隔了段时间没搞滑块了,下面例子不知道还能用不,推荐热心网友写的解决方案

Selenium反反爬-滑块验证


2019.09.10

下面的例子已经改为阿里的人机认证了,但是其实用selenium启动浏览器后,依旧可以用pynput来操控键鼠来完成模拟操作,单纯调用send_keys()和click()都会被识别出来了。webdriver参数太多了,有兴趣的可以考虑puppeteer来实现。


阿里系滑块验证码以nc_1开头,通过调用XXXnc.js来实现。

给个例子,视觉中国的登陆页面www.vcg.com/login

对于这样的验证码,进行JS破解是比较难得,所以应该通过selenium进行破解。

在破解过程中会遇到被网站识别出来,一般都是send_keys后面再拖动再点击登陆,但是这样大部分不行的,多半是阿里的js识别出来了。

大抵是出现:

浏览器最大化时被识别

执行滑动的action被识别

send_keys后被识别

处理逻辑是:

打开浏览器后,最大化后get(url)再刷新页面。

滑动滑块不能利用webdriver,利用pynput这个模块去做拖动操作,这个库是比较底层的,调用win32。之前使用pyautogui发现不行,估计被封装多次,已经被识别出来了

from pynput.mouse import Button, Controller as c1

send_keys应该在滑块拖动之后,这样不会被识别了

import json
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pynput.keyboard import Key, Controller as c2
from pynput.mouse import Button, Controller as c1class vcg_get_cookies():mouse = c1()url = 'https://www.vcg.com/login'options = webdriver.ChromeOptions()# 不加载图片,加快访问速度options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Seleniumoptions.add_experimental_option('excludeSwitches', ['enable-automation'])# 添加本地代理# options.add_argument("--proxy--server=127.0.0.1:8080")# 添加UAua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'options.add_argument('user-agent=' + ua)driver = webdriver.Chrome(executable_path="D:\chromedriver.exe", options=options)driver.maximize_window()wait = WebDriverWait(driver, 10)driver.get(url)time.sleep(3)driver.refresh()while True:# pyautogui.press('f5')# keyboard.press(Key.f5)driver.refresh()time.sleep(3)mouse.position = (1562, 355)mouse.press(Button.left)mouse.move(1890, 358)mouse.release(Button.left)time.sleep(3)WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.CLASS_NAME, 'nc-lang-cnt')))if driver.find_element_by_class_name('nc-lang-cnt').text == '验证通过':breaktime.sleep(2)driver.find_element_by_name('id').send_keys('用户名')time.sleep(2)driver.find_element_by_name('password').send_keys('密码')driver.find_element_by_class_name('sign-in-form__btn').click()time.sleep(5)user_name = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'userInfo')))print(user_name)cookies = driver.get_cookies()  # Selenium为我们提供了get_cookies来获取登录cookiesdriver.close()  # 获取cookies便可以关闭浏览器# 然后的关键就是保存cookies,之后请求从文件中读取cookies就可以省去每次都要登录一次的# 当然可以把cookies返回回去,但是之后的每次请求都要先执行一次login没有发挥cookies的作用jsonCookies = json.dumps(cookies)  # 通过json将cookies写入文件with open('vcgCookies.json', 'w') as f:f.write(jsonCookies)print(cookies)

阿里系纯滑块验证码破解思路相关推荐

  1. 云片滑块验证码破解思路

    云片滑块验证码破解思路 作者:Qiled 邮箱:qiled@qq.com 项目Github地址:https://github.com/chenjinhu/YunpianPojie 交流添加Tencen ...

  2. 极验第四代滑块验证码破解(三):滑块轨迹构造

    极验第四代滑块验证码破解(三):滑块轨迹构造 声明 一.极验滑动轨迹分析 1. 生成滑动轨迹的js入口 2. 滑动轨迹的python实现 二.结语 *本期文章结束啦,如果对您有帮助,记得收藏加关注哦, ...

  3. 极验滑块验证码破解与研究(二):缺口图片还原

    极验滑块验证码破解与研究(二):缺口图片还原 声明 一.缺口图片还原js分析 1. 为什么需要还原 2. 本篇文章需要用到的小工具 2.1. reres插件 3. 找到图片还原js入口函数 3.1. ...

  4. 极验滑块验证码破解最新版

    一.简述: 最近无聊想搞一下极验的滑块验证码破解这块,发现破解js代码耗时又耗力出现版本更新可能以前的所有努力都要推翻重做,不够通用性,最后还是选用selenium + PIL 来实现滑块验证码的破解 ...

  5. 极验第四代滑块验证码破解(四):请求分析及加密参数破解

    极验第四代滑块验证码破解(四):请求分析及加密参数破解 声明 一.极验请求分析 1. 滑块测试网站入口 2. 滑块验证过程抓包 3. 请求详解 3.1. adaptive-captcha-demo 3 ...

  6. 极验滑块验证码破解与研究(三):滑块缺口识别

    极验滑块验证码破解与研究(三):滑块缺口识别 声明 一.环境安装 1. 第三方库安装 二.滑块缺口识别 1. 准备工作 2. 工具函数说明 3. 接口识别原理讲解 4. 缺口识别完整代码 三.结语 * ...

  7. 极验第四代滑块验证码破解(一):AST还原混淆JS

    极验第四代滑块验证码破解(一):AST还原混淆JS 声明 一.环境安装 二.AST还原混淆JS 1. 需要还原的js代码链接 2. AST还原源码 3. 极验不同js或不同版本还原方式 三.结语 *本 ...

  8. 极验第四代滑块验证码破解(二):滑块缺口识别

    极验第四代滑块验证码破解(二):滑块缺口识别 声明 一.环境安装 1. 第三方库安装 二.滑块缺口识别 1. 与极验三代滑块对比 2. 缺口识别完整代码 三.结语 *本期文章结束啦,如果对您有帮助,记 ...

  9. Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!

    导 语 好久没更新了,上来冒个泡吧.各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T): Selenium模拟登录系列 | B站滑块验证码破解 今天随手更新了一下Seleniu ...

最新文章

  1. wireless(二维数组前缀和)
  2. hdu4280(最大流)
  3. Leet Code OJ 268. Missing Number [Difficulty: Medium]
  4. 在CentOS6.5上安装Tomcat7
  5. 计算机教室管理责任书,计算机教室管理安全责任书.doc
  6. Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率
  7. 软件测试的目标及组织测试过程
  8. 定期存款转消费卡项目需求书
  9. 获取IP及判断IP是否在区间
  10. python3制作歌词解析器
  11. unity mmd不支持android,MMD模型导入Unity的解决方案
  12. 18-HTML标签的居中
  13. 决战行测5000题-数量关系精华版
  14. 洛谷 P4704 太极剑
  15. 【samba】Wodows同步Linux文件|搭建共享文件服务器——在windows上映射网络驱动器...
  16. android 配置aspect_Android全面屏适配
  17. 日常一记(3)--禁止excel自动运行宏
  18. [转载]无线网络优化
  19. STVD生成HEX格式文件
  20. 使用人人开源项目遇到的一些坑

热门文章

  1. 七牛云对象存储绑定个人域名
  2. 【JZOJ3054】祖孙询问【LCA】
  3. 防止DDOS攻击的策略
  4. HTML 怎么取消文本框的输入时的边框?
  5. Yii 发送电子邮件
  6. 韩国网站的一些弱口令
  7. 云米科技2018全年财报:全年营收25.612亿元 同比增193.3%
  8. 新华三:数字化从我做起
  9. 男人为什么容易掉头发?
  10. osmocom-bb 国外的一个开源项目, c118