搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 州的先生 > 在Python爬虫中将PhantomJS伪装成Chrome浏览器

在Python爬虫中将PhantomJS伪装成Chrome浏览器

州的先生 2017-11-30

前言


在写爬虫的过程中,出于系统环境或是效率的问题,我们经常使用PhantomJS作为Selenium操纵的浏览器webdriver,而不是直接使用Chrome或FireFox的webdriver,尽管后者更加直观。


PhantomJS的优点虽然很多,但是缺点却也不少,有一个不能称之为缺点的缺点就是,PhantomJS的浏览器标识是“PhantomJS”(勇敢的做自己竟然有错……:))


PhantomJS的标识本没有什么问题,但是在现在越来越多的网站不断升级自己的反爬虫技术的情况下,PhantomJS显然成为了一个和“requests”一样的靶子。


只要服务器后台识别到访问者的User-Agent为PhantomJS,就有可能被服务器判定为爬虫行为,而导致爬虫失效。


如同在requests中修改header头域以伪装成浏览器一样,我们可以在Selenium中将PhantomJS的浏览器标识修改为任意浏览器的标识。下面介绍一下:


PhantomJS的浏览器标识


首先来看看PhantomJS的浏览器标识是怎样的。


http://service.spiritsoft.cn/ua.html是一个获取浏览器标识User-Agent的网站,访问它就会显示当前使用的浏览器的标识:




我们使用Selunium操纵PhantomJS访问http://service.spiritsoft.cn/ua.html,看看返回的结果:


在Python爬虫中将PhantomJS伪装成Chrome浏览器

在Python爬虫中将PhantomJS伪装成Chrome浏览器

很明显的有PhantomJS的痕迹。接下来,我们对PhantomJS的浏览器标识进行修改。

伪装成Chrome


引入一个关键的模块——DesiredCapabilities:

在Python爬虫中将PhantomJS伪装成Chrome浏览器


这个模块是干什么用的呢?我们看看源码的解释:

在Python爬虫中将PhantomJS伪装成Chrome浏览器

描述了一系列封装的浏览器属性的键值对,大致就是用来设置webdriverde的属性。我们使用它来设置PhantomJS的User-Agent。


首先将DesiredCapabilities转换为一个字典,方便添加键值对:

在Python爬虫中将PhantomJS伪装成Chrome浏览器


然后添加一个浏览器标识的键值对:

在Python爬虫中将PhantomJS伪装成Chrome浏览器


最后,在实例化PhantomJS中设为参数:

在Python爬虫中将PhantomJS伪装成Chrome浏览器


完整的代码如下:


我们运行一下代码:


成功地将PhantomJS标识为了Chrome浏览器。

是不是很简单?

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《在Python爬虫中将PhantomJS伪装成Chrome浏览器》的版权归原作者「州的先生」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注州的先生微信公众号

州的先生微信公众号:gh_5422a79a65ab

州的先生

手机扫描上方二维码即可关注州的先生微信公众号

州的先生最新文章

精品公众号随机推荐