如何使用CasperJS发送cookie

car*_*mel 11 javascript cookies phantomjs casperjs

我认为我发送的每个请求都是在没有cookie的情况下发送的.

当我像这样听onResourceRequested事件时:

this.page.onResourceRequested = function(request) {
    utils.dump(request);
};
Run Code Online (Sandbox Code Playgroud)

并且每个请求都具有相同形式的标头:

"headers": [
    {
        "name": "User-Agent",
        "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"
    },
    {
        "name": "Accept",
        "value": "text/css,*/*;q=0.1"
    },
    {
        "name": "Referer",
        "value": "https://some_site.com/page"
    }
],
Run Code Online (Sandbox Code Playgroud)

我从来没有得到应该在那里的cookie的标题..

当我尝试查看cookie时 - 我运行这个:

utils.dump(this.page.cookies);
Run Code Online (Sandbox Code Playgroud)

我得到了许多cookie条目的列表.

我认为这给我的刮擦脚本带来了一些错误.

你的意见?谢谢.

编辑

我尝试发出POST请求来下载文件.我可以登录该站点,浏览到几个页面,进入下载页面 - 但是,当我发送请求时,我收到一条消息"错误:要注册该站点,您必须启用浏览器才能接受cookie. "

这就是为什么它令人困惑 - 我可以登录并浏览网站(所以我必须传递一些cookie)但我无法下载(所以我可能没有这里的cookie ..)

mjk*_*mjk 0

启动 CasperJS 时提供 cookiejar 以保存 cookie(并在会话之间重用它们)。

命令行选项:

--cookies-file=/path/to/cookies.txt
Run Code Online (Sandbox Code Playgroud)

在全:

$ casperjs --cookies-file=/path/to/cookies.text myscript.js 
Run Code Online (Sandbox Code Playgroud)