阿里系纯滑块验证码破解思路
本文旨在经验交流,如若侵犯利益,请联系删除。
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)
阿里系纯滑块验证码破解思路相关推荐
- 云片滑块验证码破解思路
云片滑块验证码破解思路 作者:Qiled 邮箱:qiled@qq.com 项目Github地址:https://github.com/chenjinhu/YunpianPojie 交流添加Tencen ...
- 极验第四代滑块验证码破解(三):滑块轨迹构造
极验第四代滑块验证码破解(三):滑块轨迹构造 声明 一.极验滑动轨迹分析 1. 生成滑动轨迹的js入口 2. 滑动轨迹的python实现 二.结语 *本期文章结束啦,如果对您有帮助,记得收藏加关注哦, ...
- 极验滑块验证码破解与研究(二):缺口图片还原
极验滑块验证码破解与研究(二):缺口图片还原 声明 一.缺口图片还原js分析 1. 为什么需要还原 2. 本篇文章需要用到的小工具 2.1. reres插件 3. 找到图片还原js入口函数 3.1. ...
- 极验滑块验证码破解最新版
一.简述: 最近无聊想搞一下极验的滑块验证码破解这块,发现破解js代码耗时又耗力出现版本更新可能以前的所有努力都要推翻重做,不够通用性,最后还是选用selenium + PIL 来实现滑块验证码的破解 ...
- 极验第四代滑块验证码破解(四):请求分析及加密参数破解
极验第四代滑块验证码破解(四):请求分析及加密参数破解 声明 一.极验请求分析 1. 滑块测试网站入口 2. 滑块验证过程抓包 3. 请求详解 3.1. adaptive-captcha-demo 3 ...
- 极验滑块验证码破解与研究(三):滑块缺口识别
极验滑块验证码破解与研究(三):滑块缺口识别 声明 一.环境安装 1. 第三方库安装 二.滑块缺口识别 1. 准备工作 2. 工具函数说明 3. 接口识别原理讲解 4. 缺口识别完整代码 三.结语 * ...
- 极验第四代滑块验证码破解(一):AST还原混淆JS
极验第四代滑块验证码破解(一):AST还原混淆JS 声明 一.环境安装 二.AST还原混淆JS 1. 需要还原的js代码链接 2. AST还原源码 3. 极验不同js或不同版本还原方式 三.结语 *本 ...
- 极验第四代滑块验证码破解(二):滑块缺口识别
极验第四代滑块验证码破解(二):滑块缺口识别 声明 一.环境安装 1. 第三方库安装 二.滑块缺口识别 1. 与极验三代滑块对比 2. 缺口识别完整代码 三.结语 *本期文章结束啦,如果对您有帮助,记 ...
- Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!
导 语 好久没更新了,上来冒个泡吧.各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T): Selenium模拟登录系列 | B站滑块验证码破解 今天随手更新了一下Seleniu ...
最新文章
- wireless(二维数组前缀和)
- hdu4280(最大流)
- Leet Code OJ 268. Missing Number [Difficulty: Medium]
- 在CentOS6.5上安装Tomcat7
- 计算机教室管理责任书,计算机教室管理安全责任书.doc
- Linux指令设置波特率停止位,linux下的picocom怎么设置停止位,波特率
- 软件测试的目标及组织测试过程
- 定期存款转消费卡项目需求书
- 获取IP及判断IP是否在区间
- python3制作歌词解析器
- unity mmd不支持android,MMD模型导入Unity的解决方案
- 18-HTML标签的居中
- 决战行测5000题-数量关系精华版
- 洛谷 P4704 太极剑
- 【samba】Wodows同步Linux文件|搭建共享文件服务器——在windows上映射网络驱动器...
- android 配置aspect_Android全面屏适配
- 日常一记(3)--禁止excel自动运行宏
- [转载]无线网络优化
- STVD生成HEX格式文件
- 使用人人开源项目遇到的一些坑