var phantom = require('phantom');
console.dir(phantom);
phantom.create(function(browser){
browser.createPage(function(page){
page.customHeaders={
"HTTP_USER_AGENT": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36",
};
console.dir(page.settings);
//undefined
page.settings={};
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.settings.HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
console.dir(page.settings);
page.open('http://example.com/req.php', function() {
setTimeout(function() {
var output = page.evaluate(function() {
return document;
});
console.dir(output);
//undefined
}, 1000);
});});});
Run Code Online (Sandbox Code Playgroud)
当我使用phantomjs时,我尝试使用三种不同的方式为userAgent设置标头但是当我访问页面并将PHP $ _SERVER对象保存到txt pad时我仍然看到PhantomJS
HTTP_USER_AGENT: Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.1-development Safari/538.1
Run Code Online (Sandbox Code Playgroud)
不仅如此,页面的输出也是未定义的.
似乎文档已经改变,或者我找不到正确的文档.我在看
http://phantomjs.org/api/webpage/property/settings.html
https://www.npmjs.com/package/phantom
这是如何正确使用的?
Art*_* B. 10
根据文档中的功能详细信息,您必须通过以下方式设置用户代理page.set():
page.set('settings.userAgent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36');
Run Code Online (Sandbox Code Playgroud)
它必须以这种方式完成,因为桥必须与PhantomJS进程通信,而不是以非异步方式执行此操作.这可能已经实现了Object.defineProperty.
如果要一次设置多个设置,可以执行(ref):
page.set('settings', {
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11",
javascriptEnabled: false,
loadImages: false
});
Run Code Online (Sandbox Code Playgroud)
您可以找到可以设置的设置列表page.settings.
| 归档时间: |
|
| 查看次数: |
8048 次 |
| 最近记录: |