无法在page.evaluate PhantomJS中设置Cookie

时间:2015-10-25 18:59:16

标签: javascript cookies phantomjs

我需要获取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(不成功

哪里有问题?这是怎么解决的?

1 个答案:

答案 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);
});