2016-12-29 7 views
0

私はRubyアプリケーションを持っていて、特定のJavascriptがWebサイトにインストールされているかどうかを検出したいと思います。私はネット::です。OpenTimeout取得Rubyのページコンテンツを取得する

user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.854.0 Safari/535.2" 
doc = Nokogiri::HTML(open(url, 'User-Agent'=>user_agent, 'read_timeout' => '10'), nil, "UTF-8") 

しかし、いくつかのウェブサイト:ほとんどのウェブサイト上では、次のコードでこのページのコンテンツを取得するために問題ありません実行を60秒後にエラーが期限切れ。フェッチする人やしない人がいるのですが、どうすればこれらのウェブサイトを取得することもできますか?

+0

は、Https接続の可能性があります。ウェブサイトはSSLを使用していますか? – Abhinay

+0

@Abhayayいいえ、それは奇妙なことですが、私のローカルマシンからこのコードが動作しますが、私のデジタルオーシャンドロップレットではありません。 – PieterB

+0

DOでIPV6を有効にしていますか? – Blackcoat77

答えて

1

私ができる限り多く提供したURLについていくつかの調査を行った。どうやら私はHerokuでホストされている私のアプリからあなたが投稿したコードを使用し、それはうまく動作します。タイムアウトの問題はありませんでした。それはまた私のdevローカルマシンからもあなたのように働いた。

まず、問題はIPV6のみのWebサイトにあると思っていましたが、クライアントはDNSゾーンにAレコード(IPV4)のみを持ち、共有ホスティングを使用します。また、私のHerokuアプリから数多くのリクエストを送信しようとしました。私のIPが禁止されるかどうかを確認するだけです。それは起こらなかった。 hosting2go(zetom.nlホスティング会社)がドロップレットを含むDO IP範囲をブロックすることがあります。

この点からは、何が問題になるか推測するのは難しいです。 あなたの液滴へのSSHと試すことができます:

nc: connect to 83.137.194.38 port 80 (tcp) failed: Connection timed out

おそらく

番目:あなたのような何かを得る場合

nc -zv 83.137.194.38 80 

それは

Connection to 83.137.194.38 80 port [tcp/http] succeeded!

を返す必要がありますあなたのファイアウォールに問題があります。

DOドロップレットサーバの設定に問題があるとします。あなたがユーザー定義ルールのセットに基づいて着信および発信ネットワークトラフィックをフィルタリングすることによって既に設定されている場合は、最初に防滴のファイアウォールをチェックします。そうでなければ、DOサポートチームに確認します。これは、高度なトラフィックフィルタリングを実装している可能性があるためです。

ファイアウォールを有効にしていて、快適に遊べない場合は、テスト目的のために一時的に無効にすることができます(Ubuntuを使用していると仮定してUFWを有効にしているとします):

sudo ufw status verbose # Check if ufw is active 

あなたはそれを無効にすることができ、アクティブである場合:

sudo ufw disable # Will disable ufw firewall 

このコマンドは、デフォルトにクラウドサーバルールをリセットする、場合にあなたがそれを必要

sudo ufw reset 

私はそれが出発点としてビットを助けることを望みます:-)

+0

この素晴らしい返事ありがとうございます@ Blackcoat77。私はこれを試しました。そして、接続はタイムアウトを与えます。ファイアウォールがアップしているかどうかを確認しましたが、それは修正されていませんでした。それは液滴の設定で何かをしなければならない。何を理解しようとするだろう! – PieterB

関連する問題