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中的字典来处理索引统计的方法
May 05 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python中用altzone()方法处理时区的教程
May 22 Python
Python中Django 后台自定义表单控件
Mar 28 Python
Python 12306抢火车票脚本
Feb 07 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
通过python检测字符串的字母
Feb 18 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
没编程基础可以学python吗
Jun 17 Python
python读取图像矩阵文件并转换为向量实例
Jun 18 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 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
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
浅谈python数据类型及类型转换
2017/12/18 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
浅析NumPy 切片和索引
2020/09/02 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
中职生自荐信
2013/10/13 职场文书
基层干部十八大感言
2014/01/19 职场文书
品牌推广策划方案
2014/05/28 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
自我推荐信格式模板
2015/03/24 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
孝女彩金观后感
2015/06/10 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
nginx 添加http_stub_status_module模块
2022/05/25 Servers
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS