ফ্যান্টমজেএস এইচটিটিপিএস সাইট খুলতে ব্যর্থ


104

আমি লোডস্পিড.জেএস উদাহরণের ভিত্তিতে নিম্নলিখিত কোডটি ব্যবহার করছি একটি https: // সাইট খোলার জন্য যা HTTP সার্ভার প্রমাণীকরণেরও প্রয়োজন।

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();
    });
}  

এটি পৃষ্ঠাটি সর্বদা লোড করতে ব্যর্থ। এখানে কী ভুল হতে পারে? সুরক্ষিত সাইটগুলি কি অন্যরকমভাবে পরিচালনা করা যায়? যদিও ব্রাউজার থেকে সাইটটি সফলভাবে অ্যাক্সেস করা যায়।

আমি এখনই ফ্যান্টম দিয়ে শুরু করছি এবং আমি এই সমস্যাটি নিয়ে এগিয়ে যাচ্ছি না, তবুও চারপাশে খেলা বন্ধ করা খুব ভাল।

উত্তর:


153

আমি ফ্রেড এবং ক্যামেরন টিঙ্কারের উত্তরগুলি চেষ্টা করেছিলাম, তবে কেবল --ssl-প্রোটোকল = কোনও বিকল্প আমাকে সহায়তা করছে বলে মনে হচ্ছে:

phantomjs --ssl-protocol=any test.js

এছাড়াও আমি মনে করি এটি ব্যবহারে নিরাপদ হওয়া উচিত --ssl-protocol=anyকারণ আপনি এখনও এনক্রিপশন ব্যবহার করছেন তবে --ignore-ssl-errors=trueদূষিতগুলি সহ সমস্ত এসএসএল ত্রুটি উপেক্ষা করবেন (দুহ)।


1
আমাকে এই 3 টি আর্গুমেন্ট ব্যবহার করতে হয়েছিল এবং এটি সমাধান হয়েছে: "--web- সুরক্ষা = মিথ্যা", "--ssl-প্রোটোকল = যেকোন", "--ignore-ssl-त्रुटী = সত্য"। ওয়েবড্রাইভার.প্যান্টমজেএস (সার্ভিস_আরগস = ['- উপেক্ষা-এসএসএল-ত্রুটিগুলি = সত্য', "- ওয়েবে-সুরক্ষা = মিথ্যা", "- এসএসএল-প্রোটোকল = যেকোন"])
আব্দুল খালিদ

123

সমস্যাটি সম্ভবত SSL শংসাপত্রের ত্রুটির কারণে। যদি আপনি --ignore-ssl- error = হ্যাঁ বিকল্পের সাহায্যে ফ্যান্টমজগুলি শুরু করেন তবে এটি পৃষ্ঠাটি লোড করার জন্য অগ্রণী হওয়া উচিত যেমন কোনও এসএসএল ত্রুটি না থাকলে:

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

আমি কয়েকটি ওয়েবসাইট দেখেছি যে তাদের এসএসএল শংসাপত্রগুলি ভুলভাবে প্রয়োগ করতে সমস্যা হয়েছে বা সেগুলির মেয়াদ শেষ হয়ে গেছে etc. ইত্যাদি। ফ্যান্টমজগুলির জন্য কমান্ড লাইন বিকল্পগুলির একটি সম্পূর্ণ তালিকা এখানে পাওয়া যায়: http://phantomjs.org/api/command-line। এইচটিএমএল । আশা করি এটা কাজে লাগবে.


2
আপনাকে ধন্যবাদ, এটি আমার সমস্যাটিও সমাধান করেছে। আমার ক্ষেত্রে, আমি ব্রাউজারে সার্টের ত্রুটিটি পাই নি তাই এটি খুব বিভ্রান্তিকর ছিল তবে আমি কার্ববাল কার্ল করেছিলাম এবং লক্ষ্য করেছি যে যে কাজ করে না সে ওয়াইল্ডকার্ড সার্ট ব্যবহার করে (যেমন: সিএন = *। উদাহরণ ডটকম)। ফ্যান্টমজগুলি কেন এটি ব্যর্থ হয়েছে তা সম্পর্কে ভার্চুজের কারণটি ফিরিয়ে দিতে পারলে ভাল লাগবে।
নওকো

7
পবিত্র বানর। আমি চাই যে এসএসএল ত্রুটিটি ব্যাখ্যা করা হয়েছে, কেবল স্ট্রোক ওভারফ্লো এবং গোলাপী ইউনিকর্ন আমাকে মূল কারণটি সন্ধান করতে সহায়তা করে। ধন্যবাদ বন্ধুরা
সিম্পলজি

আনন্দিত এটি মানুষকে সহায়তা করছে। অন্য কোনও কমান্ড লাইন যুক্তির সাথে ভার্টোজ এসএসএল ত্রুটি সরবরাহ করার জন্য সম্ভবত ফ্যান্টমজেএসের একটি আপডেটের প্রয়োজন হবে। আমি জানি যে এসটিএল ত্রুটির তথ্য Qt তে পাওয়া যায় তবে বেশিরভাগ সময় লোকেরা কেবল ত্রুটিগুলি স্পষ্টভাবে পরিচালনা না করে দমন করে।
ক্যামেরন টিঙ্কার

আমি জানি যে আমি খেলায় দেরি করে ফেলেছি, তবে আমি দেখতে পেয়েছি যে স্ক্রিপ্ট নামের পরে বিকল্পটি যুক্ত করা কার্যকর হয়নি - আপনাকে এটিকে phantomjs --ignore-ssl-errors=yes script.js
যথাযথভাবে

হ্যাঁ, --ignore-ssl-errors=yesস্ক্রিপ্ট নামের আগে বিকল্পটি আসা উচিত। এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
ক্যামেরন টিঙ্কার

71

নোট করুন যে 2014-10-16 হিসাবে, ফ্যান্টমজেএস এইচটিটিপিএস সংযোগগুলি খুলতে এসএসএলভি 3 ব্যবহার করে ডিফল্ট। সঙ্গে poodle দুর্বলতার সম্প্রতি ঘোষণা অনেক সার্ভার SSLv3 সমর্থন নিষ্ক্রিয় করা হয়।

এটি পেতে, আপনার সাথে ফ্যান্টমজেএস চালানো উচিত:

phantomjs --ssl-protocol=tlsv1

আশা করি, ফ্যান্টমজেএস খুব শীঘ্রই টিএসএলভিএসকে এসএসএলভি 3 এর পরিবর্তে ডিফল্ট করতে আপডেট করা হবে।


4
সংস্করণ 1.9.8 ডিফল্টটিকে টিএলএসভি 1-তে স্যুইচ করে: github.com/ariya/phantomjs/issues/12670
অ্যান্ডি ট্রিগস

এটি আমার জন্য স্থির করে, এসএসএলভি 3 সার্ভারে অক্ষম করা হয়েছিল
ক্রিস হেরিং

2
নোট করুন যে ফ্যান্টমজেএস ১.৯.৮ এ আপডেট করা নতুন বাগের দিকে নিয়ে যায় ।
আর্টজম বি

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এসএসএল অক্ষম করা বা কোনও প্রোটোকলকে অনুমতি দেওয়া আমার মতে ভাল সমাধান নয়। ভাগ করে নেওয়ার জন্য ধন্যবাদ.
ডোমিনিক পি

3
এসএসএল হ্যান্ডশেক সমস্যা থেকে আমি কীভাবে আরও ভার্বোজ ডিবাগিং পেতে পারি?
wrschneider

24

একই সমস্যা ...
--ignore-ssl-error = হ্যাঁ আমার পক্ষে এটি ঠিক করার পক্ষে যথেষ্ট ছিল না, আরও দুটি জিনিস করতে হয়েছিল:
1) ব্যবহারকারী-এজেন্ট পরিবর্তন করুন
2) সমস্ত এসএসএল-প্রোটোকল চেষ্টা করেছিলেন, কেবলমাত্র এটিই কাজ করেছিল প্রশ্নের পৃষ্ঠায় tlsv1 ছিল
আশা করি এটি সাহায্য করবে ...


2
এসএসএল-প্রোটোকলকে tlsv1 এ পরিবর্তন করা আমার পক্ষেও কাজ করেছে, ধন্যবাদ!
ডেভ স্টিব্রানি 21

1
+1 আমার সমস্যাটি স্থির করলেন, ভাগ্যবান আপনি আমার সাথে এখানে নেই কারণ আমি আপনাকে এখনই চুম্বন করব LOL, চিয়ার্স
মার্টিন

এটাই আমার দরকার ছিল। আপনাকে অনেক ধন্যবাদ! Tlsv1 এর পরিবর্তে আমি "যে কোনও" ব্যবহার করেছি এবং এটিও কাজ করে। (অন্যান্য এসএসএল ওয়েবসাইটগুলিতে আমার যাওয়া উচিত কিছুটা নিরাপদ বলে মনে হয়
ব্যবহারকারী 1841243

1
ব্যবহারকারী এজেন্টকে কী পরিবর্তন করবেন?
লুকাস স্টেফেন

15

আমি একই সমস্যাটি অনুভব করেছি (ক্যাস্পারজেস ১.১.০-বিটা ৩ / ফ্যান্টমজেস ১.৯.।) --Ignore-ssl-error = হ্যাঁ এবং --ssl-প্রোটোকল = tlsv1 ব্যবহার করে এটি সমাধান হয়েছে। কেবলমাত্র একটি বিকল্প ব্যবহার করা আমার পক্ষে এটি সমাধান করেনি।


এই কৌশলটি কোডশিপ সিআই-তে আমার সমস্যার সমাধান করেছে, একটি ফ্যান্টমজ + বিহ্যাট স্যুট চালাচ্ছে (ug 10 ঘন্টা ডিবাগিংয়ের পরে এবং জিনিসগুলি চেষ্টা করার পরে)
জেএনসি

হাঁ। কিছু নির্বোধ ঘন্টা পরে আপনার মন্তব্য আমার দিন!
ইয়ারিমাদম

1

আমি গ্রহণ করছিলাম

ফ্যান্টমজেএস থেকে এসএসএল প্রসঙ্গ তৈরিতে ত্রুটি (সেন্টোস .6..6 এ চলমান)

উত্স থেকে বিল্ডিং আমার জন্য এটি স্থির। আপনার নির্মিত ফ্যান্টমজগুলি ব্যবহার করতে ভুলবেন না। (যদি আপনি / usr / স্থানীয় / বিন / ফ্যান্টমজগুলি থাকে তবে)

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>

1
আমি জানি না কেন লোকেরা আপনার উত্তরটিকে নেতিবাচকভাবে রেট করে। উপরে উল্লিখিত সমস্ত সমাধান এবং সংগ্রামের দিনগুলি চেষ্টা করার পরেও এটি আমার জন্য কাজ করা একমাত্র সমাধান। ফ্যান্টমজেএস QT এর কারণে সংকলন করতে বেশ বিরক্তিকর, তবে এটি মূল্যবান।
ফ্লোরিয়ানবি

0

যদি কেউ সাহির সাথে ফ্যান্টমজ ব্যবহার করে তবে আপনার ব্রাউজার_টাইপস.এমএমএল ফাইলটিতে --ignore-ssl-errorsবিকল্পটি প্রয়োজন। এটা আমার জন্য কাজ করে।

<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>

0

কি হবে shebang?

আপনি যদি phantomjsস্ক্রিপ্টগুলি কার্যকর করতে শেবাং ব্যবহার করছেন তবে নীচের শেবাং লাইনটি ব্যবহার করুন

#!/usr/bin/phantomjs --ignore-ssl-errors=yes
    
var system = require('system');
var webpage = require('webpage');

// ... rest of your script

উপরের যে কোনও উত্তর ব্যবহার করুন। আমি ব্যক্তিগতভাবে পছন্দ করি --ignore-ssl-errors=yesযেহেতু আমার লুপব্যাক ওয়েব সার্ভারের স্ব-স্বাক্ষরিত শংসাপত্রটি বৈধতা দেওয়া অপ্রাসঙ্গিক।


0

এখানে অন্য উত্তরগুলির কোনওটিই আমাকে সহায়তা করেনি; এটি হতে পারে যে নির্দিষ্ট সাইট (গুলি) নিয়ে আমি কাজ করছিলাম সেগুলির HTTP শিরোনামগুলি খুব পিক ছিল। এটিই কাজ করেছিল:

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

আমি জানতে পেরেছিলাম যে ফ্যান্টমজেএস "কীপ-অ্যালাইভ" (মূলধনযুক্ত) ব্যবহার করছে এবং সংযোগটি জীবিত রাখা হচ্ছে না। :)


0

আমি SSL Handshake Failedগতকাল পেয়েছিলাম । আমি ফ্যান্টমজেএস অপশনগুলি ( --ignore-ssl-errors=yesইত্যাদি) এর অনেকগুলি সংমিশ্রণ চেষ্টা করেছি , কিন্তু তাদের কোনওটিই কাজ করে না।

ফ্যান্টমজেএস ২.১.১ এ আপগ্রেড করা এটি ঠিক করেছে।

আমি ফ্যান্টমজেএস ইনস্টলেশন নির্দেশাবলী https://gist.github.com/julionc/7476620 এ ব্যবহার করে ফ্যান্টমজেএস সংস্করণটি ২.১.১ এ পরিবর্তন করেছি।


0

যে মেশিনে আপনি রিমোট সার্ভারের সাথে সংযোগ স্থাপনের জন্য ফ্যান্টমজ চালানোর চেষ্টা করছেন, "ওপেনসেল সাইফারস" চালান। --Ssl-ciphers = "" কমান্ড লাইন বিকল্পে তালিকাভুক্ত সাইফারগুলি অনুলিপি করুন এবং আটকান। এটি সংযোগকারী ওয়েব সার্ভারকে জানায় যে আপনার ক্লায়েন্টের সাথে যোগাযোগের জন্য কোন সাইফারগুলি ব্যবহারের জন্য উপলব্ধ। আপনি যদি নিজের মেশিনে উপলভ্য সেট না করেন, এটি কোনও মেশিন ব্যবহার করতে পারে আপনার মেশিন বুঝতে পারে না যে ডিফল্ট আধুনিক ব্রাউজারগুলি ডিফল্ট সেটিংসের জন্য ব্যবহৃত হয়।


-2

আমার পক্ষে কাজ করা একমাত্র জিনিসটি ছিল 1.9x থেকে 2.x;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.