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实现apahce网站日志分析示例
Apr 02 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
怎样使用Python脚本日志功能
Aug 14 Python
使用Python绘制图表大全总结
Feb 11 Python
python清除函数占用的内存方法
Jun 25 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
Python调用钉钉自定义机器人的实现
Jan 03 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
scrapy结合selenium解析动态页面的实现
Sep 28 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仿ZOL分页类代码
2008/10/02 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
全面理解闭包机制
2016/07/11 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
JS实现随机点名器
2020/04/12 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
对命令行模式与python交互模式介绍
2018/05/12 Python
python微信好友数据分析详解
2018/11/19 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
大学系主任推荐信范文
2013/12/24 职场文书
甜品店的创业计划书范文
2014/01/02 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
产品质量承诺书
2014/03/27 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
模具专业求职信
2014/06/26 职场文书
社区党员公开承诺书
2014/08/30 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
MySQL索引失效的典型案例
2021/06/05 MySQL