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/
环境搭建
安装python并添加到环境变量,pip安装需要的相关模块即可。
原理简介
先实例化一个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)
简单演示一下效果吧:
Selenium模拟登录系列 | 淘宝滑块验证码破解!不难嘛!相关推荐
- 解决selenium + chromedriver模拟登录被淘宝反爬
解决selenium + chromedriver模拟登录被淘宝反爬 问题 使用 selenium + webdriver 模拟淘宝登录时,出现滑动验证码反爬,尝试程序模拟滑动滑块,以及在程序打开的 ...
- 使用selenium模拟浏览器,获取淘宝搜索页面商品名称销量等信息
作者:李忠林 Github: https://github.com/Leezhonglin Gitblog: https://leezhonglin.github.io/ 本文仅用于学习. 使用自动化 ...
- python 滑块验证码_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- python 淘宝滑块验证_python selenium 淘宝滑块验证码 问题
正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...
- 淘宝滑块验证码的解决方法 和 接口
采集淘宝商品详情遇到滑块验证码的解决方法 最近更新时间:2019年11月25日,*大家都知道,淘宝的反爬虫机制十分严,而很多时候,没办法高效的拿到数据内容响应终端需求,而依赖爬虫就会造成动不动就出现滑 ...
- python模拟登录爬淘宝模特信息
先模拟登录 再爬取照片 # -*- coding:utf-8 -*-import urllib import urllib2 import cookielib import re import web ...
- Selenium滑块验证登录天猫淘宝网站
模拟登录天猫和淘宝网址,直接跳过滑块验证的方法. import timefrom selenium.webdriver import Chrome from selenium.webdriver im ...
- selenium模拟登录淘宝
基于selenium模拟登录淘宝读取cookie 1. from selenium import webdriver import time from selenium.webdriver.commo ...
- Selenium 模拟登录淘宝,获取cookies给requests使用
文章目录 前言 代码 总结 前言 今天爬取淘宝商品图片,遇到登录拦截,看了淘宝的登录 url 里的请求参数,好多加密,果断放弃. 不过可以用selenium模拟登录,然后获取cookies给reque ...
最新文章
- 网站设计支离破碎:究竟是谁之过
- Linux学习之十二-Linux文件属性
- 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
- mysql数据库安全机制研究意义_MySQL数据库的安全机制
- java 包含汉字,java判断字符串中是否包含汉字
- 用HttpClient来模拟浏览器GET POST
- Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
- 借贷宝java_【人人行(借贷宝)Java面试】借贷宝java后端开发面经。-看准网
- java蓝字代表什么_蓝是什么意思 蓝字五行属什么
- 基于动态规划DTW算法加速衡量两个不同的时间序列的相似性
- linux系统 ghost,Linux下用GHOST来做系统备份
- 怎么清理C盘释放空间 ?
- mysql怎么创建外表_PostgreSQL使用MySQL外表的步骤详解(mysql_fdw)
- 运用frame、frameset框架不显示问题
- 记一次使用fiddler抓包抖音的挫折
- IDEA启动报错Plugin Error Problems found loading plugins: Plugin “GlassFish Integration“ was not...
- STM32 FSMC TFT LCD
- 修改苹果Mac终端前面的计算机名
- 三步学会在noi linu下对拍
- 如何开一家盈利的健身房?我用1年回本的经验告诉你,别谈恋爱
热门文章
- 力软快速开发框架建设与介绍
- 在华为、小米、涂鸦三大生态下,为什么人们还是更偏向于HomeKit?
- oracle starup失败,oracle startup失败提示ORA-04031
- pscad与matlab接口,pscad与matlab接口
- spring boot 统一处理敏感词
- Sql server 2005与2008 数据库置疑修复
- Endnotex9 在Word中插入参考文献时出现{,#80},如何解决
- js中json转excel
- 实战:Eclipse运行速度调优
- 计算机内图标wps云盘怎么去掉,Win10资源管理器WPS云文档图标如何清除