selenium跳过webdriver检测并模拟登录淘宝


Posted in Python onJune 12, 2019

简介

模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳过检验,但随着大型网站的升级,采取该策略比较难实现了。因为你使用get/post方式进行爬取数据,会提示需要登录,而登录又是一大难题,需要滑动验证码验证。当你想使用IP代理池进行跳过检验时,发现登录时需要手机短信验证码验证,由此可以知道旧的全自动爬取数据对于大型网站比较困难了。

selenium是一款优秀的WEB自动化测试工具,所以现在采用selenium进行半自动化爬取数据,支持模拟登录淘宝和自动处理滑动验证码。

编写思路

由于现在大型网站对selenium工具进行检测,若检测到selenium,则判定为机器人,访问被拒绝。所以第一步是要防止被检测出为机器人,如何防止被检测到呢?当使用selenium进行自动化操作时,在chrome浏览器中的consloe中输入windows.navigator.webdriver会发现结果为Ture,而正常使用浏览器的时候该值为False。所以我们将windows.navigator.webdriver进行屏蔽。

在代码中添加:

options = webdriver.ChromeOptions()
  # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
  options.add_experimental_option('excludeSwitches', ['enable-automation']) 
  self.browser = webdriver.Chrome(executable_path=chromedriver_path, options=options)

同时,为了加快爬取速度,我们将浏览器模式设置为不加载图片,在代码中添加:

options = webdriver.ChromeOptions()
  # 不加载图片,加快访问速度
  options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})

至此,关键的步骤我们已经懂了,剩下的就是编写代码的事情了。在给定的例子中,需要你对html、css有一定了解。
比如存在以下代码:

self.browser.find_element_by_xpath('//*[@class="btn_tip"]/a/span').click()
  taobao_name = self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.site-nav-bd > ul.site-nav-bd-l > li#J_SiteNavLogin > div.site-nav-menu-hd > div.site-nav-user > a.site-nav-login-info-nick ')))
  print(taobao_name.text)

第1行代码指的是从根目录(//)开始寻找任意(*)一个class名为btn_tip的元素,并找到btn_tip的子元素a标签中的子元素span

第2行代码指的是等待某个CSS元素出现,否则代码停留在这里一直检测。以.开头的在CSS中表示类名(class),以#开头的在CSS中表示ID名(id)。A > B,指的是A的子元素B。所以这行代码可以理解为寻找A的子元素B的子元素C的子元素D的子元素E出现,否则一直在这里检测。

第3行代码指的是打印某个元素的文本内容

使用教程

点击这里下载下载chrome浏览器

查看chrome浏览器的版本号,点击这里下载对应版本号的chromedriver驱动

pip安装下列包

[x] pip install selenium

点击这里登录微博,并通过微博绑定淘宝账号密码

在main中填写chromedriver的绝对路径

在main中填写微博账号密码

#改成你的chromedriver的完整路径地址
 chromedriver_path = "/Users/bird/Desktop/chromedriver.exe" 
 #改成你的微博账号
 weibo_username = "改成你的微博账号"
 #改成你的微博密码
 weibo_password = "改成你的微博密码"

演示图片

selenium跳过webdriver检测并模拟登录淘宝

源代码

项目源代码在GitHub仓库

项目持续更新,欢迎您star本项目

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木

Python 相关文章推荐
Python脚本实现代码行数统计代码分享
Mar 10 Python
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
解决python调用自己文件函数/执行函数找不到包问题
Jun 01 Python
python如何调用java类
Jul 05 Python
python3.4 将16进制转成字符串的实例
Jun 12 #Python
python binascii 进制转换实例
Jun 12 #Python
Python3 实现串口两进程同时读写
Jun 12 #Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 #Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 #Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 #Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 #Python
You might like
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
javascript实现表单验证
2016/01/29 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
JavaScript实现区块链
2018/03/14 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
小程序实现密码输入框
2020/11/16 Javascript
详解Python中的文件操作
2016/08/28 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
中专自我鉴定范文
2013/10/16 职场文书
文明学生事迹材料
2014/01/29 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
消防志愿者活动方案
2014/08/23 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
英语演讲开场白
2015/05/29 职场文书
婚庆司仪开场白
2015/05/29 职场文书
创业计划书之寿司
2019/07/19 职场文书