[https] PhantomJS가 HTTPS 사이트를 열지 못함

http 서버 인증이 필요한 https : // 사이트를 열기 위해 loadspeed.js 예제를 기반으로 다음 코드를 사용하고 있습니다.

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으로 시작하고 있으며이 문제로 진행하지 않더라도 장난을 멈추는 것이 너무 좋다고 생각합니다.



답변

Fred와 Cameron Tinker의 답변을 시도했지만 –ssl-protocol = any 옵션 만 도움이되는 것 같습니다.

phantomjs --ssl-protocol=any test.js

또한 --ssl-protocol=any여전히 암호화 를 사용하고 있기 때문에 사용하는 것이 더 안전해야한다고 생각 하지만 --ignore-ssl-errors=true악의적 인 오류를 포함하여 모든 SSL 오류를 무시합니다.


답변

SSL 인증서 오류로 인한 문제 일 가능성이 큽니다. –ignore-ssl-errors = yes 옵션으로 phantomjs를 시작 하면 SSL 오류가없는 것처럼 페이지로드를 진행해야합니다.

phantomjs --ignore-ssl-errors=yes [phantomOptions] script.js [scriptOptions]

SSL 인증서를 잘못 구현하는 데 문제가 있거나 만료 된 등의 문제가있는 웹 사이트를 몇 개 보았습니다. phantomjs에 대한 전체 명령 줄 옵션 목록은 http://phantomjs.org/api/command-line에서 확인할 수 있습니다 . html . 이게 도움이 되길 바란다.


답변

2014-10-16 현재 PhantomJS는 HTTPS 연결을 열기 위해 SSLv3를 사용하도록 기본 설정되어 있습니다. 와 푸들의 취약점이 최근 발표, 많은 서버는 SSLv3에 지원을 비활성화합니다.

이 문제를 해결하려면 다음을 사용하여 PhantomJS를 실행할 수 있어야합니다.

phantomjs --ssl-protocol=tlsv1

바라건대 PhantomJS가 곧 업데이트되어 SSLv3 대신 TLSv1을 기본값으로 만들 것입니다.


답변

동일한 문제가 발생했습니다 …
–ignore-ssl-errors = yes는 저를 위해 해결하기에 충분하지 않았고, 두 가지 추가 작업을 수행해야했습니다.
1) user-agent를 변경
해야합니다.

2) 모든 SSL 프로토콜을 시도했습니다. 문제의 페이지에 대한 tlsv1
이 도움 이 되었기를 바랍니다
.


답변

같은 문제가 발생했습니다 (casperjs 1.1.0-beta3 / phantomjs 1.9.7). –ignore-ssl-errors = yes 및 –ssl-protocol = tlsv1을 사용하여 해결했습니다. 옵션 중 하나만 사용해도 문제가 해결되지 않았습니다.


답변

나는 받고 있었다

phantomJS (CentOS 6.6에서 실행)에서 “SSL 컨텍스트 생성 오류”

소스에서 빌드하면 문제가 해결되었습니다. 구축 한 phantomjs를 사용하는 것을 잊지 마십시오. (있는 경우 / usr / local / bin / phantomjs 대신)

sudo yum -y install gcc gcc-c++ make flex bison gperf ruby openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.0
./build.sh
cd bin/
./phantomjs <your JS file>


답변

누군가 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>