25418


PhantomJSをDockerで構築し、試しにスクリプトをスクリプトを動かしてみたのですが、Receiveで受け取ったSet-
CookieをRequestのヘッダーにセットしてくれないようで、困っています。

Dockerは、下記を使用しています。  
<https://hub.docker.com/r/cmfatih/phantomjs/>

試したスクリプトは、下記です。

[code]

    'use strict';
    var page = require('webpage').create();
    page.onConsoleMessage = function(msg) {
      console.log(msg);
    };
    page.onResourceRequested = function(request) {
      console.log('Request ' + JSON.stringify(request, undefined, 4));
    };
    page.onResourceReceived = function(response) {
      console.log('Receive ' + JSON.stringify(response, undefined, 4));
    };
    page.open("https://www.google.co.jp/search?q=phantomjs", function(status) {
    setTimeout(function () {
      console.log('Page Cookie =====================================\n' + JSON.stringify(page.cookies, undefined, 4));
      page.open("https://www.google.co.jp/search?q=phantomjs",function(status) {
        setTimeout(function () {
          console.log('Phantom Cookie =====================================\n' + JSON.stringify(phantom.cookies, undefined, 4));
          phantom.exit();
        }, 3000);
      });
    }, 3000);
    });
    
[/code]

結果は、こんな感じでHeadersにCookieはセットされていません。

[code]

    Request {
        "headers": [
            {
                "name": "User-Agent",
                "value": "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.8 Safari/534.34"
            },
            {
                "name": "Accept",
                "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            }
        ],
        "id": 8,
        "method": "GET",
        "time": "2016-06-02T02:53:19.135Z",
        "url": "https://www.google.co.jp/search?q=phantomjs"
    }
    
[/code]


CC BY-SA 3.0
2016-06-02T03:01:17.427
25375
2016-06-03T09:22:32.920
3715
question
phantomjs
PhantomJSでCookieが動作しない


ソースコードを読んで調べたところ、リクエストのヘッダーにCookieの内容を自動的にセットしてくれる機能は無いっぽいです。

自力でやるしか無い！？


CC BY-SA 3.0
2016-06-03T09:22:32.920
25418
2016-06-03T09:22:32.920
3715
25375
answer