抱歉,你查看的文章不存在

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

前言

在写爬虫的过程中,出于系统环境或是效率的问题,我们经常使用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,看看返回的结果:

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

伪装成Chrome

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

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

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

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

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

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

完整的代码如下:

我们运行一下代码:

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

是不是很简单?

PS:公众号上显示代码着实是痛苦,设成代码块一保存,样式就丢了,设成图片,一些长的代码又看不清。如果代码看不清的,可以点击原文,在博客上阅读。

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2017-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

州的先生

4 篇文章54 人订阅

相关文章

来自专栏软件开发

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(《后台管理UI的选择》)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为...

68011
来自专栏逸鹏说道

Linux下搜狗输入法和快捷键Ctrl+Space冲突的解决

把搜狗的启动快捷键给删了(如果有两个键盘【英+中】,你按Shift就可以切换了,完全没必要占着茅坑)

1234
来自专栏大数据钻研

Meta标签的那些事

Meta标签是HTML语言head区的一个辅助性标签,它位于HTML文档头部的head标记和title标记之间,它提供用户不可见的信息。它可用于浏览器(如何显示...

2805
来自专栏Seebug漏洞平台

Firefox - SVG cross domain cookie vulnerability

SVG - 通过 img 标签设置跨域 cookie 我最近有了解到,浏览器允许使用 meta 标签来设置 cookie 。我不确定我是不是忘了这一特性,或者之...

2946
来自专栏java系列博客

IDEA全局护眼色

1953
来自专栏用户2442861的专栏

Chrome开发者工具不完全指南(一、基础功能篇)

http://www.cnblogs.com/constantince/p/4565261.html

932
来自专栏程序员同行者

使用autoc js生成文章目录(侧边)导航栏

3282
来自专栏GuZhenYin

[EasyUI美化换肤]更换EasyUi图标

前言 本篇文章主要是记录一些换EasyUI皮肤的过程,备忘.也欢迎美工大神各路UI给点好意见,EasyUI我就不介绍了,自行百度吧..(So..所以别问我是不是...

6258
来自专栏葡萄城控件技术团队

Wijmo 更优美的jQuery UI部件集:发现 Wijmo

什么是 Wijmo? Wijmo 是一个基于jQuery UI的UI部件的套件。Wijmo 部件对客户端Web开发进行了优化,并且充分利用了jQuery的强大...

2249
来自专栏张戈的专栏

为WordPress开启Nginx缩略图功能,七牛从此陌路

张戈博客曾分享过不少关于云存储的一些经验技巧,对七牛感兴趣或者遇到相关问题的朋友可以看一看以前的相关文章: 七牛&又拍云 CDN 云存储节省 GET 次数的小...

4315

扫码关注云+社区

领取腾讯云代金券