我正在尝试使用phantomjs来自动登录到facebook。问题是facebook在提交登录表单之前使用js代码设置cookie。单击电子邮件输入框,登录表单可以触发设置cookie的facebook js代码,因此我在登录前创建了一个单击电子邮箱的脚本,但仍然显示“浏览器未启用Cookies。请在您的浏览器首选项中启用Cookie以继续。“信息。这是我的代码:
var page = require('webpage').create();
var data = {};
var fs = require('fs');
var CookieJar = 'cookie.json';
page.customHeaders = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0'
};
if (fs.isFile(CookieJar)) {
Array.prototype.forEach.call(JSON.parse(fs.read(CookieJar)), function(x) {
phantom.addCookie(x);
});
}
page.open('https://www.facebook.com/login.php', function(status) {
setTimeout(function() {
pageloaded();
setTimeout(function() {
afterclick();
}, 3000);
}, 3000);
function pageloaded() {
pagex = page.evaluate(function() {
function mouseclick(element) {
var event = document.createEvent(
'MouseEvents');
event.initMouseEvent('click', true,
true, window, 1, 0, 0);
element.dispatchEvent(event);
}
var element = document.querySelector('#email');
mouseclick(element);
});
}
function afterclick() {
data.content = page.content;
fs.write(CookieJar, JSON.stringify(phantom.cookies), 'w');
console.log(page.content);
phantom.exit();
}
});
此代码基本上转到facebook登录页面,然后点击电子邮件输入框。最终结果应该是cookie.json文件包含facebook设置的cookie,但我没有得到任何cookie。我也试过使用--cookies-file命令行,在我看来,phantomjs只能存储服务器端设置的cookie吗?或者我做错了什么?
答案 0 :(得分:0)
只需更改您的用户代理
即可page.settings.userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:44.0) Gecko/20100101 Firefox/44.0"