我需要获取Cookie并将其设置在PhantomJS中以获取对第二台服务器的请求 site2.com
@echo off
echo User %USERNAME% on computer %COMPUTERNAME%>"%TEMP%\ipconfig.txt"
%SystemRoot%\System32\ipconfig.exe>>"%TEMP%\ipconfig.txt"
type "%TEMP%\ipconfig.txt"
echo.
del "%TEMP%\ipconfig.txt"
pause
_http://site1.com 第一台服务器,在PhanotmJS中设置Cookie(成功)
_http://site2.com 第二台服务器,无法在phantomjs中设置Cookie(不成功)
哪里有问题?这是怎么解决的?
答案 0 :(得分:1)
页面上的JavaScript只能为运行JavaScript的域设置Cookie。因此,如果您通过document.cookie
内的page.evaluate()
设置了Cookie,并且您当前在site1.com上,那么您只能 为site1.com设置Cookie。
通常,您首先必须从要设置Cookie的域中打开某个页面,但您也可以使用&{34;的domain
属性来使用phantom.addCookie(obj)
函数。 site2.com"组。在通过page.evaluate()
添加脚本标记之前,您需要执行此操作。请注意,phantom
内未提供page.evaluate()
。
此外,可能需要一段时间才能实际添加Cookie,因此我添加了一个简短的setTimeout()
。
这样的事情应该有效:
page.open("http://site1.com", function(){
phantom.addCookie({
'name': 'Cookie-Name',
'value': 'Cookie-Value',
'domain': 'site2.com'
});
setTimeout(function(){
page.evaluate(function(){
var d = document.createElement('script');
d.src = "http://site2.com/javascript_file.js"
document.appendChild(d);
});
}, 200);
});