2017-11-06 7 views
2

私は情報をGoogleから取得するために使用します。私はいくつかの要求の後にブロックすることを知っています。そのためプロキシを通過しようとしました。プロキシのために私は、このリンクから ProxyBrokerを使用します。私はプロキシを使用している場合、私は、エラーをクリックすると The Linkpython - サービスを利用できません - urllibプロキシが動作しません

しかし、Googleは503を返し、GoogleはプロキシIPを私に私のIPを示していません。私はhttpとhttpsで試してみました

usedProxy = self.getProxy() 
if usedProxy is not None: 
    proxies = {"http": "http://%s" % usedProxy[0]} 
    headers = {'User-agent': 'Mozilla/5.0'} 
    proxy_support = urlrequest.ProxyHandler(proxies) 
    opener = urlrequest.build_opener(proxy_support, urlrequest.HTTPHandler(debuglevel=1)) 
    urlrequest.install_opener(opener) 

    req = urlrequest.Request(search_url, None, headers) 
    with contextlib.closing(urlrequest.urlopen(req)) as url: 
     htmltext = url.read() 

:ここ

は、私が試したものです。

要求がうまくいっている場合であっても、私は次のメッセージこれで503取得:

send: b'GET http://www.google.co.in/search?q=Test/ HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: www.google.co.in\r\nUser-Agent: Mozilla/5.0\r\nConnection: close\r\n\r\n' 
reply: 'HTTP/1.1 302 Found\r\n' 
header: Date header: Server header: Location header: Pragma header: Expires header: Cache-Control header: Content-Type header: Content-Length header: X-XSS-Protection header: X-Frame-Options header: 

>Connection send: b'GET http://ipv4.google.com/sorry/index?continue=http://www.google.co.in/search%3Fq%3DTest/&q=EgTCDs9XGMbOgNAFIhkA8aeDS0dE8uXKu31DEbfj5mCVdhpUO598MgFy HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: ipv4.google.com\r\nUser-Agent: Mozilla/5.0\r\n 

>Connection: close\r\n\r\n' 
reply: 'HTTP/1.1 503 Service Unavailable\r\n' 

上記のエラーが発生していない場合、私は最終的に次のエラーを取得する:

>[Errno 54] Connection reset by peer 

私の質問は以下のとおりです。

  1. は私のIPとはないプロキシIPたびに、エラーのリンクからIPです?

    Google Error Link

  2. そしてit's場合は、問題がエラーを回避する方法を、プロキシからであるホストIP何かグーグルからのエラーメッセージに示されており、たびに?

答えて

0

私はプロキシに行くことを知っているようです。なぜなら、HTTPSを使用し、HTTPSプロキシが動作していないからです。したがって、HTTPプロキシが検出されたので、50-60回のクエリの直後にブロックされます。

マイソリューション:

私はStackOverflowの上で見つかったすべてのソリューションを試してみましたが、彼らは10秒間スリープのような仕事の罰金をdoesen't。しかし、私は同じ問題を持つ記事を見つけました。その解決策は "かなり"簡単でした。まず、Pythonからfake-useragentライブラリをダウンロードします。これは、数多くの有用なUser-agentを提供します。

私はこのリクエストから毎回このリストのUser-agentをランダムに選択します。そうでないと、ページには私のreadメソッドに収まらない別のHTMLがあるため、一般的なユーザーエージェントだけを使用して追加します。

Useragentをインストールしてランダムに選択した後、記事作成者が異なるタイムスパンを試して30秒間ブロックしたため、15〜90秒間スリープ状態を追加します。だから、これらの2つの簡単な変更で、私のプログラムは10時間以来、うまく動いています。

Googleがいつあなたをブロックするかを把握するのに時間がかかるので、これもあなたにも役立ちます。だからシンプルなことは毎回検出しますが、この設定で行かせてください。

お楽しみください、あなたはすべて正常にクロールしてください!

EDIT:

のprogrammは、それが禁止され得るまで〜1000の要求を取得します。

関連する問題