4

ユーザー エージェント文字列を変更するプログラムを書きたいと思います。

Pythonでこれを行うにはどうすればよいですか?

4

7 に答える 7

8

HTTP リクエストのユーザー エージェント文字列を意味していると思いますか? これは、リクエストとともに送信される単なる HTTP ヘッダーです。

Python の urllib2 を使用:

import urllib2

url = 'http://foo.com/'

# add a header to define a custon User-Agent
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' }

req = urllib2.Request(url, '', headers)
response = urllib2.urlopen(req).read()
于 2009-06-12T15:22:40.843 に答える
3

ではurllib、次のように実行されます。

import urllib

class AppURLopener(urllib.FancyURLopener):
    version = "MyStrangeUserAgent"

urllib._urlopener = AppURLopener()

あとはurllib.urlopen普通に使えます。では、のパラメータとともにurllib2使用して、必要なすべてのヘッダー (ユーザー エージェントを含む) を作成する新しい要求オブジェクトに設定します。req = urllib2.Request(...)headers=somedictrequrllib2.urlopen(req)

もちろん、HTTP リクエストを送信する他の方法には、ヘッダーを指定する他の方法があります。

于 2009-06-12T15:24:28.420 に答える
2

Python を使用すると、 urllibを使用して Web ページをダウンロードし、バージョン値を使用してユーザー エージェントを変更できます。

http://wolfprojects.altervista.org/changeua.phpに非常に良い例があります

そのページからコピーした例を次に示します。

>>> from urllib import FancyURLopener

>>> class MyOpener(FancyURLopener):
...   version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11)
 Gecko/20071127 Firefox/2.0.0.11'
>>> myopener = MyOpener()
>>> page = myopener.open('http://www.google.com/search?q=python')
>>> page.read()
[…]Results <b>1</b> - <b>10</b> of about <b>81,800,000</b> for <b>python</b>[…]
于 2009-06-12T15:22:12.687 に答える
2

urllib2組み込みなのでいいのですが、選択肢があるときは機械化を使用する傾向があります。の多くの機能を拡張しurllib2ます (ただし、その多くは近年 python に追加されています)。とにかく、それがあなたが使用している場合、ユーザーエージェント文字列を変更する方法に関するドキュメントの例を次に示します。

import mechanize
cookies = mechanize.CookieJar()
opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))
opener.addheaders = [("User-agent", "Mozilla/5.0 (compatible; MyProgram/0.1)"),
                     ("From", "responsible.person@example.com")] 

幸運を祈ります。

于 2009-06-12T15:38:03.023 に答える
0

Python 3.2 (py3k) 用に更新:

import urllib.request
headers = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' }
url = 'http://www.google.com'
request = urllib.request.Request(url, b'', headers)
response = urllib.request.urlopen(request).read()
于 2011-12-29T09:36:56.387 に答える
0

Web ページを開くときに送信するユーザー エージェント文字列を変更したい場合は、Google で Firefox プラグインを探してください。;) たとえば、これを見つけまし。または、Python でプロキシ サーバーを記述して、ブラウザーとは無関係にすべての要求を変更することもできます。

私のポイントは、弦の交換は簡単な部分になるということです。あなたの最初の質問は、どこを変更する必要がありますか? すでにそれを知っている場合 (ブラウザーで? プロキシ サーバーで? あなたと Web サーバーの間のルーターで?)、私たちはおそらくもっと役立つでしょう。または、スクリプト内でこれを行っているだけの場合は、いずれかのurllib回答を使用してください。;)

于 2009-06-12T15:28:03.920 に答える