如何在 phantom 模块中设置用户代理字符串?
How to set the user agent string in the phantom module?
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);
});});});
当我使用 phantomjs 时,我尝试使用三种不同的方式为 userAgent 设置 header,但是当我访问该页面并将 PHP $_SERVER object 保存到 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
不仅如此,页面的输出也是未定义的。
似乎文档已更改或我找不到正确的文档。我在看
http://phantomjs.org/api/webpage/property/settings.html
https://www.npmjs.com/package/phantom
如何正确使用?
根据文档中的 Functional Details,您必须通过 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');
它必须以这种方式完成,因为桥必须与 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
});
您可以在 page.settings
中找到可以设置的设置列表。
目前 [ 27.01.2018 ],具有以下要求:
幻影:^4.0.12,
网页:^0.3.0
我用这个方法设置这个属性:
page.setting(key, value);
我用 $_SERVER 数组中的 php 检查了它。它工作正常。
完整的代码如下所示:
const phantom = require('phantom');
(async function() {
const instance = await phantom.create();
const page = await instance.createPage();
page.setting('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");
await page.on('onResourceRequested', function(requestData) {
//Dump request settings to view result of our changes:
console.info('Requesting', requestData);
});
const status = await page.open('https://whosebug.com');
const content = await page.property('content');
//console.log(content);
await instance.exit();
})();
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);
});});});
当我使用 phantomjs 时,我尝试使用三种不同的方式为 userAgent 设置 header,但是当我访问该页面并将 PHP $_SERVER object 保存到 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
不仅如此,页面的输出也是未定义的。
似乎文档已更改或我找不到正确的文档。我在看
http://phantomjs.org/api/webpage/property/settings.html
https://www.npmjs.com/package/phantom
如何正确使用?
根据文档中的 Functional Details,您必须通过 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');
它必须以这种方式完成,因为桥必须与 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
});
您可以在 page.settings
中找到可以设置的设置列表。
目前 [ 27.01.2018 ],具有以下要求: 幻影:^4.0.12, 网页:^0.3.0
我用这个方法设置这个属性:
page.setting(key, value);
我用 $_SERVER 数组中的 php 检查了它。它工作正常。
完整的代码如下所示:
const phantom = require('phantom');
(async function() {
const instance = await phantom.create();
const page = await instance.createPage();
page.setting('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");
await page.on('onResourceRequested', function(requestData) {
//Dump request settings to view result of our changes:
console.info('Requesting', requestData);
});
const status = await page.open('https://whosebug.com');
const content = await page.property('content');
//console.log(content);
await instance.exit();
})();