首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >假装火狐而不是Phantom.js

假装火狐而不是Phantom.js
EN

Stack Overflow用户
提问于 2013-08-19 22:27:41
回答 1查看 17K关注 0票数 18

默认情况下,当我尝试使用Phantomjs报废本站时,Phantomjs会向服务器发送以下头:

代码语言:javascript
复制
"name":"User-Agent",
"value":"Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34"}

我得到了status 405 "Not Allowed"的回复。

我在Phantomjs引用中看到,为了模仿来自其他浏览器的请求,我应该更改我的用户代理值。在维基百科上,我找到了冒充FirefoxUbuntu下的价值。

代码语言:javascript
复制
'name': 'User-Agent',
'value': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20120815 Firefox/16.0'

我应该把这个属性放在幻影的哪个部分?我应该将它们插入哪里--在page.open中,还是在page.open的顶部?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-20 00:18:50

实际上,是在page.settings上。在open之前做。

下面是一个示例,在链接的页面上使用它:

代码语言:javascript
复制
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open('http://www.oddsportal.com/baseball/usa/mlb/results/page/', function() {
    window.setTimeout(function() {
        var output = page.evaluate(function() {
            return document.getElementById('tournamentTable')
           .getElementsByClassName('deactivate')[0]
           .getElementsByTagName('a')[0]
           .textContent;
        });
        console.log(output);
    }, 1000);
});

此示例将在表的第一行中刮取匹配名。(在这个精确的时刻是"San Francisco Giants - Boston Red Sox")

关于您的评论,实际上您可以在幻影use下面使用jquery!请检查此示例:

代码语言:javascript
复制
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open('http://www.oddsportal.com/baseball/usa/mlb/results/page/', function() {
    window.setTimeout(function() {
        page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function() {
            var output = page.evaluate(function () {
                return jQuery('#tournamentTable .deactivate:first a:first').text();
            });
            console.log(output);
        });
    }, 1000);
});

顺便说一句,为了等待,我建议您不要使用我在本示例中使用的window.setTimeout,而是使用waitfor.js

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18324125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档