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的ORM框架SQLObject入门实例
Apr 28 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python读出当前时间精度到秒的代码
Jul 05 Python
python实现图片插入文字
Nov 26 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
解决python 执行shell命令无法获取返回值的问题
Dec 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中for循环语句的几种变型
2006/11/26 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
js验证表单大全
2006/11/25 Javascript
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
Javascript面向对象编程
2012/03/18 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
js图片预加载示例
2014/04/30 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
Python读取网页内容的方法
2015/07/30 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python Selenium 库的使用技巧
2020/10/16 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
服装设计专业毕业生推荐信
2013/11/09 职场文书
班长演讲稿范文
2014/04/24 职场文书
广播节目策划方案
2014/05/23 职场文书
移交协议书
2014/08/19 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技