2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题

致谢:

Charles未晞

Charles的皮卡丘

提供解决思路,此文实为借鉴。

2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题

 

前言:

利用selenium模拟登录淘宝,外界传言这个确实很难过,有各种轨迹检测。

但是我没想到淘宝的滑块验证码这么容易就能过。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

开发工具

Python版本:3.6.4

相关模块:

selenium模块;

python内置模块。

Chromedriver:

自行谷歌,下载和电脑上的谷歌浏览器版本相匹配的驱动。

selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;由于selenium解析执行了CSS、JavaScript所以相对requests它的性能是低下的;

1.安装selenium

pip install selenium

先实例化一个webdriver.Chrome对象,用于自动化操作我们电脑里的谷歌浏览器:

browser = webdriver.Chrome(executable_path=chromedriverpath)

模拟点击网页左上方的"亲,请登录"以进入淘宝网的登录界面:

2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题

 

然后跳转到下面的界面:

2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题

 

刚开始居然是没有出现验证码的,是我多次试错后调试出来的。

模拟输入账户信息:

2020年最新的过某宝滑块验证技术,Python大牛轻松搞定技术难题

 

# 输入用户名密码
username_sender = driver_wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="fm-login-id"]')))
username_sender.send_keys(username)
password_sender = driver_wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="fm-login-password"]')))
password_sender.send_keys(password)

这类滑块验证码需要用户按住滑块,并将它拖动到最右边。一开始我也以为淘宝会加入一些检测手段以识别是机器还是人在操作滑块。结果发现和外界传闻的不一样,用ActionChains函数直接把滑块拖到最右边就可以验证通过了:

try:  
slider = browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")
if slider.is_displayed():
ActionChains(browser).click_and_hold(on_element=slider).perform()
ActionChains(browser).move_by_offset(xoffset=258, yoffset=0).perform()
ActionChains(browser).pause(0.5).release().perform()
except:
pass

最后模拟点击一下登录按钮就行了:

# 点击登录按钮
button = driver_wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="login-form"]/div[4]/button')))
button.click()

程序到这里就大功告成了,有些人就很奇怪了,为什么这么简单就可以真的实现过验证呢?其实吧就总结了一句话:纸上得来终觉浅,绝知此事要躬行!

原文地址:https://www.cnblogs.com/shann001/p/13065428.html