首发于 Charles的皮卡丘
Selenium模拟登录系列 | 淘宝滑块验证码破解

Selenium模拟登录系列 | 淘宝滑块验证码破解

原文链接

导语

好久没更新了,上来冒个泡吧。各位小伙伴还记得前段时间号主挖过的一个坑嘛(虽然我曾经挖过无数个坑T_T):

Selenium模拟登录系列 | B站滑块验证码破解

今天随手更新了一下SeleniumLogin这个包,支持了一波利用selenium模拟登录淘宝,顺便分享给大家。虽然不想承认,但是这篇文章其实挺水的,因为我没想到淘宝的滑块验证码这么容易就能过T_T。

废话不多说,让我们愉快地开始吧~

相关文件

本系列所有相关代码都可以在这找到:

https://github.com/CharlesPikachu/SeleniumLogin

开发工具

Python版本:3.6.4
相关模块:
selenium模块;
以及一些python自带的模块。
Chromedriver:
在下面这个链接里下载和电脑上的谷歌浏览器版本相匹配的驱动:
http://npm.taobao.org/mirrors/chromedriver/

原理简介

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

browser = webdriver.Chrome(executable_path=chromedriverpath, options=chrome_opts)

接着,我们用它来自动访问一下淘宝网:

browser.get('http://www.taobao.com')

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

具体而言,代码实现如下:

button = driver_wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'h')))
button.click()

自动填充一下用户名和密码:

# 输入用户名密码
username_sender = driver_wait.until(EC.presence_of_element_located((By.ID, 'fm-login-id')))
username_sender.send_keys(username)
password_sender = driver_wait.until(EC.presence_of_element_located((By.ID, 'fm-login-password')))
password_sender.send_keys(password)

上面的代码直接用ID来定位输入框了:

当然你也可以通过以下这些方式来定位网页中的元素,具体想怎么用全看个人喜好,初学者不必过于纠结这些东西:

BY.CLASS_NAME
BY.CSS_SELECTOR
BY.LINK_TEXT
BY.NAME
BY.PARTIAL_LINK_TEXT
BY.TAG_NAME
BY.XPATH

自动填充完用户名和密码后,登录界面可能会出现滑块验证码,如下图所示:

这类滑块验证码需要用户按住滑块,并将它拖动到最右边。一开始我以为淘宝会加入一些检测手段以识别是机器还是人在操作滑块。结果我发现我想多了,用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

最后模拟点击一下登录按钮就ok啦:

# 点击登录按钮
button = driver_wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'password-login')))
button.click()

大功告成,完整源代码详见相关文件呗~

效果展示

想要学习实现原理的,可以自己参考我上传到Github上源代码:

https://github.com/CharlesPikachu/SeleniumLogin

对于不想了解原理只想直接使用的小伙伴,我已经把本文介绍的淘宝模拟登录功能打包好上传到pypi了,库的名字叫SeleniumLogin,用法和之前开源的DecryptLogin类似:

嘿嘿,之前开源的模拟登录工具包开源文档上线啦~

只不过DecryptLogin借助于requests实现各大网站的模拟登录操作,而SeleniumLogin借助于selenium。

具体而言,只需要pip安装:

pip install SeleniumLogin

然后写几行代码就可以实现淘宝的模拟登录啦:

from SeleniumLogin import login
lg = login.Login()
username, browser = lg.taobao(username=xxx, password=xxx, chromedriverpath=xxx)

简单演示一下效果吧:

淘宝模拟登录https://www.zhihu.com/video/1253062732590764032

深圳SEO优化公司荆州关键词排名推荐邵阳营销型网站建设价格木棉湾SEO按天计费哪家好邵阳百度关键词包年推广价格济源网站优化排名公司邵阳网页制作推荐成都网站定制报价巴中网站推广工具公司运城优化多少钱常州网站设计公司莆田网站改版公司中山建设网站价格三亚百度网站优化排名价格肇庆如何制作网站哪家好银川营销网站公司廊坊企业网站制作公司玉林网站优化软件哪家好丹竹头seo报价邢台百度关键词包年推广报价漯河网站制作设计公司秦皇岛如何制作网站多少钱承德网络营销报价淮安设计公司网站哪家好南京百度竞价包年推广多少钱毕节设计网站兰州网站设计哪家好菏泽优化公司漳州网站开发多少钱松岗模板网站建设报价盘锦模板推广价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化