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 16 Python
python实现将元祖转换成数组的方法
May 04 Python
python 设置文件编码格式的实现方法
Dec 21 Python
浅述python2与python3的简单区别
Sep 19 Python
python实现字符串加密成纯数字
Mar 19 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
Python还能这么玩之只用30行代码从excel提取个人值班表
Jun 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
php使用curl访问https示例分享
2014/01/17 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
JS实现简易计算器
2020/02/14 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
python写程序统计词频的方法
2019/07/29 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
Python调用Windows命令打印文件
2020/02/07 Python
python标准库OS模块详解
2020/03/10 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
Python可以用来做什么
2020/11/23 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
网络技术专业求职信
2014/05/02 职场文书
初中学校军训方案
2014/05/09 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
诉讼授权委托书
2014/10/15 职场文书
2014年个人工作总结范文
2014/11/07 职场文书
工作经验交流材料
2014/12/30 职场文书
慈善募捐倡议书
2015/04/27 职场文书
MySQL创建定时任务
2022/01/22 MySQL