Я хотел бы написать программу, которая меняет строку моего пользовательского агента.Как я могу изменить строку пользовательского агента программно?
Как это сделать в Python?
Я хотел бы написать программу, которая меняет строку моего пользовательского агента.Как я могу изменить строку пользовательского агента программно?
Как это сделать в Python?
Используя Python, вы можете использовать urllib для загрузки веб-страниц и использования значения версии для изменения пользовательского агента.
Существует очень хороший пример 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>[…]
Я предполагаю, что вы имеете в виду строку агента пользователя в запросе HTTP? Это только HTTP-заголовок, который отправляется вместе с вашим запросом.
использованием 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()
В urllib
, это делается так:
import urllib
class AppURLopener(urllib.FancyURLopener):
version = "MyStrangeUserAgent"
urllib._urlopener = AppURLopener()
, а затем просто использовать urllib.urlopen
нормально. В urllib2
используйте req = urllib2.Request(...)
с параметром headers=somedict
, чтобы установить все нужные заголовки (включая пользовательский агент) в новый объект запроса req
, который вы делаете, и urllib2.urlopen(req)
.
Другие способы отправки HTTP-запросов имеют другие способы указания заголовков, конечно.
Если вы хотите изменить строку пользовательского агента, которую вы отправляете при открытии веб-страниц, google для плагина Firefox. ;) Например, я нашел this one. Или вы можете написать прокси-сервер в Python, который изменяет все ваши запросы независимо от браузера.
Моя точка зрения заключается в том, что смена струны будет легкой частью; ваш первый вопрос должен быть, , где его нужно изменить? Если вы уже знаете, что (на прокси-сервере браузера? На маршрутизаторе между вами и веб-серверами вы бьетесь?), Мы, вероятно, можем быть более полезными. Или, если вы просто делаете это внутри скрипта, перейдите к любому из ответов urllib
. ;)
urllib2
приятно, потому что он встроен, но я предпочитаю использовать mechanize, когда у меня есть выбор. Он расширяет функциональность 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", "[email protected]")]
удачи.
Обновление для 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()
Как упоминалось в приведенных выше ответов, то поле агента пользователя в заголовке запроса HTTP может быть изменен с помощью встроенных модулей в Python, таких как urllib2. В то же время важно также проанализировать, что именно видит веб-сервер. Недавняя статья на User agent detection дает пример кода и вывод, который дает описание того, что веб-сервер видит при отправке программного запроса.
Если на ваш вопрос был дан ответ, вы хотели бы отметить один из ответов в качестве решения? – chossenger