https - phantomjs ssl protocol




PhantomJSがHTTPSサイトを開くことができません (7)

shebangどうですか?

phantomjsスクリプトを実行するためにshebangを使用している場合は、次のシバン行を使用します

#!/usr/bin/phantomjs --ignore-ssl-errors=yes

var system = require('system');
var webpage = require('webpage');

// ... rest of your script

上記の回答のいずれかを使用してください。 私は個人的に--ignore-ssl-errors=yes好きです。 --ignore-ssl-errors=yes 、私のループバックWebサーバーの自己署名証明書を検証することとは無関係だからです。

loadspeed.jsの例に基づいて次のコードを使用して、HTTPサーバー認証も必要とするhttps://サイトを開きます。

var page = require('webpage').create(), system = require('system'), t, address;

page.settings.userName = 'myusername';
page.settings.password = 'mypassword';

if (system.args.length === 1) {
    console.log('Usage: scrape.js <some URL>');
    phantom.exit();
} else {
    t = Date.now();
    address = system.args[1];
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('FAIL to load the address');
        } else {
            t = Date.now() - t;
            console.log('Page title is ' + page.evaluate(function () {
                return document.title;
            }));
            console.log('Loading time ' + t + ' msec');
        }
        phantom.exit();
    });
}  

そのページを常に読み込めません。 ここで何が間違っているのでしょうか? セキュリティで保護されたサイトは、処理方法が異なりますか? しかし、サイトはブラウザから正常にアクセスできます。

私はちょうど今Phantomから始まっていて、私はこの問題で前進していないにしても、やっかいをやめるのはあまりにも良いと思っています。


2014-10-16の時点で、PhantomJSはデフォルトでSSLv3を使用してHTTPS接続を開くことに注意してください。 最近発表されたPOODLEの脆弱性により、多くのサーバーがSSLv3サポートを無効にしています。

これを回避するには、PhantomJSを次のように実行する必要があります。

phantomjs --ssl-protocol=tlsv1

うまくいけば、PhantomJSはSSLv3の代わりにTLSv1をデフォルトにするために間もなく更新される予定です。


他の答えは私を助けませんでした。 それは、私が作業していた特定のサイトがHTTPヘッダーであまりにも厄介なことかもしれません。 これはうまくいきました:

var page = webpage.create();
page.customHeaders = {
    "Connection": "keep-alive"
};

私はPhantomJSが "Keep-Alive"(大文字)を使用していて、接続が生き残っていないことを知りました。 :)


私はFredとCameron Tinkerの答えを試しましたが、 --ssl-protocol =任意のオプションだけが私を助けてくれます:

phantomjs --ssl-protocol=any test.js

また、暗号化を使用しているので、 --ignore-ssl-errors=true --ssl-protocol=anyを使用する方が安全だと思いますが、-- --ignore-ssl-errors=trueは悪意のあるものを含め、すべてのsslエラーを無視します。


私は同じ問題(casperjs 1.1.0-beta3 / phantomjs 1.9.7)を経験しました。 --ignore-ssl-errors = yesと--ssl-protocol = tlsv1を使用して解決しました。 いずれかのオプションだけを使っても私のために解決されませんでした。


私は昨日SSL Handshake Failed 。 私はphantomJSオプションの多くの組み合わせ( --ignore-ssl-errors=yesなど)を試しましたが、どれもうまくいきませんでした。

phantomJS 2.1.1にアップグレードすると修正されました。

私はhttps://gist.github.com/julionc/7476620でphantomJSのインストール手順を使用し、phantomJSのバージョンを2.1.1に変更しました。


誰かがSahiでPhantomjsを使用している場合、-- --ignore-ssl-errorsオプションはbrowser_types.xmlファイルに入っている必要があります。 それは私のために働いた。

<browserType>
    <name>phantomjs</name>
    <displayName>PhantomJS</displayName>
    <icon>safari.png</icon>
    <path>/usr/local/Cellar/phantomjs/1.9.2/bin/phantomjs</path>
    <options>--ignore-ssl-errors=yes --debug=yes --proxy=localhost:9999 /usr/local/Cellar/phantomjs/phantom-sahi.js</options>
    <processName>"PhantomJS"</processName>
    <capacity>100</capacity>
    <force>true</force>
</browserType>




phantomjs