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 域名分析工具实现代码
Jul 15 Python
python爬虫常用的模块分析
Aug 29 Python
浅析Python编写函数装饰器
Mar 18 Python
python 循环while和for in简单实例
Aug 16 Python
python中Switch/Case实现的示例代码
Nov 09 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
python 两个数据库postgresql对比
Oct 21 Python
Python新手如何理解循环加载模块
May 29 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 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随机生成信用卡卡号的方法
2015/03/23 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
浅谈Python基础之I/O模型
2017/05/11 Python
K-means聚类算法介绍与利用python实现的代码示例
2017/11/13 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
python打包生成so文件的实现
2020/10/30 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
工厂保安员岗位职责
2014/01/31 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
小学评语大全
2014/04/22 职场文书
促销活动总结怎么写
2014/06/25 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
尼克胡哲观后感
2015/06/08 职场文书
师范生见习总结范文
2015/06/23 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书