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之用Python计算
Sep 12 Python
python爬虫使用cookie登录详解
Dec 27 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
Aug 12 Python
基于python实现从尾到头打印链表
Nov 02 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
Pandas把dataframe或series转换成list的方法
Jun 14 Python
python Matplotlib模块的使用
Sep 16 Python
基于Django集成CAS实现流程详解
Nov 28 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 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中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
vue多种弹框的弹出形式的示例代码
2017/09/18 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
将Python中的数据存储到系统本地的简单方法
2015/04/11 Python
python2.x实现人民币转大写人民币
2018/06/20 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python3爬虫学习入门教程
2018/12/11 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
python SVM 线性分类模型的实现
2019/07/19 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
Python如何实现单例模式
2016/06/03 面试题
《恐龙》教学反思
2014/04/27 职场文书
人事经理岗位职责
2014/04/28 职场文书
大气污染防治方案
2014/05/19 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2015年妇女工作总结
2015/05/14 职场文书
初中毕业生感言
2015/07/31 职场文书
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
Go语言读取txt文档的操作方法
2022/01/22 Golang