0

私はこのようなスクリプトを持っています

 import mechanize
 url = "http://www.globalhide.com/browse.php?u=u=http://www.whoisxmlapi.com/whoisserver/WhoisService?domainName=google.com"
 br = mechanize.Browser()
 br.set_handle_robots(False)
 br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
 response = br.open(url)
 content = response.read()
 f = open('q.html', 'w')
 f.write(content)
 f.close()

これ をpythonシェルから実行すると、このような結果が必要です。結果は正しいです。しかし、これをsomething.pyファイルに保存し、このように実行するとpython something.py、q.htmlのコンテンツがここに画像の説明を入力 私のコードに何が問題なのですか?

4

2 に答える 2

2

コード自体に問題はないと思います。要求された URL を変更すると、適切なデータが返されます。

このブロックは、globalhide.com 自身によって実装されています。質問に追加したリンクは、添付したのと同じページを提供します (多かれ少なかれ)。このホットリンクのブロックがどのように実装されているか正確にはわかりませんが、リファラーの見出しを介して実装されている可能性があります. リファラーのなりすましを調べると、ここで役立つ場合があります。

編集

リファラーのスプーフィングに関して、銃を少しジャンプさせました。私はアーロンのクッキーの提案に行きます.

于 2013-05-01T12:59:47.023 に答える
2

その URL については、XML を取得することもあれば、Chrome Linux で「ホットリンクなし」ページを取得することもあります。最初のヒットは、同じ URL の非ホットリンク ページを返します。Cookie を消去してそのページに再度アクセスすると、ホットリンクなしの画像が表示されます。

このサイトには Cookie が必要なようです。以下はコードで動作するはずです。

policy = mechanize.DefaultCookiePolicy(rfc2965=True) 
cj = mechanize.LWPCookieJar(policy=policy)
br.set_cookiejar(cj)

Cookie を実装するさまざまな方法の詳細については、Mechanize Docs - Cookiesを参照してください。

編集 1 Cookie jar を保存する必要があります。 Cookielib - 保存を参照してください。

編集 2サイトが私のために設定した Cookie 情報は次のとおりです。

Name:   __utma
Content:    53296278.1653562620.1363413018.1311413018.1337443014.1
Domain: .globalhide.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Wednesday, May 1, 2013 6:56:58 AM
Expires:    Friday, May 1, 2015 6:56:58 AM
Name:   s
Content:    x2tjlhb1qfidn5t1ds8kvd24p5
Domain: www.globalhide.com
Path:   /
Send for:   Any kind of connection
Accessible to script:   Yes
Created:    Wednesday, May 1, 2013 6:56:57 AM
Expires:    When the browsing session ends
于 2013-05-01T13:05:09.520 に答える