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 httplib模块使用实例
Apr 11 Python
实例说明Python中比较运算符的使用
May 13 Python
python 实时遍历日志文件
Apr 12 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
Python处理文本换行符实例代码
Feb 03 Python
Django 实现下载文件功能的示例
Mar 06 Python
python实现堆和索引堆的代码示例
Mar 19 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
详解python中各种文件打开模式
Jan 19 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
使用Python的Flask框架来搭建第一个Web应用程序
2016/06/04 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
计算机专业毕业生推荐信
2013/11/25 职场文书
青安岗事迹材料
2014/05/14 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
委托书格式范文
2015/01/28 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
如何在Python项目中引入日志
2021/05/31 Python