Python 如何以编程方式更改用户代理字符串?
我想写一个程序,改变我的用户代理字符串 如何在Python中执行此操作?使用Python,您可以下载网页并使用版本值更改用户代理 这方面有一个很好的例子 以下是从该页面复制的示例:Python 如何以编程方式更改用户代理字符串?,python,user-agent,Python,User Agent,我想写一个程序,改变我的用户代理字符串 如何在Python中执行此操作?使用Python,您可以下载网页并使用版本值更改用户代理 这方面有一个很好的例子 以下是从该页面复制的示例: >>> from urllib import FancyURLopener >>> class MyOpener(FancyURLopener): ... version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1
>>> 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>[…]
>>从urllib导入FancyURLopener
>>>类开孔器(开孔器):
... 版本='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()
[…]python大约81800000个结果中的1-10个[…]
我想您是指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()
在
urllib
中,它是这样做的:
import urllib
class AppURLopener(urllib.FancyURLopener):
version = "MyStrangeUserAgent"
urllib._urlopener = AppURLopener()
然后正常使用urllib.urlopen
。在urllib2
中,使用参数为headers=somedict
的req=urllib2.Request(…)
在您创建的新请求对象req
和urllib2.urlopen(req)
中设置您想要的所有头(包括用户代理)
当然,发送HTTP请求的其他方式也有指定头的其他方式。如果您想更改打开网页时发送的用户代理字符串,请在google上搜索Firefox插件。;)例如,我发现。或者您可以用Python编写一个代理服务器,它可以独立于浏览器更改所有请求
我的观点是,更改字符串将是最容易的部分;你的第一个问题应该是,我需要在哪里更改它?如果您已经知道(在浏览器?代理服务器?上,您和正在访问的web服务器之间的路由器上?),我们可能会更有帮助。或者,如果您只是在脚本中执行此操作,请使用任何
urllib
答案 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")]
祝您好运。为Python 3.2(py3k)更新:
如上所述,可以使用python中的内置模块(如urllib2)更改http请求头中的用户代理字段。同时,分析web服务器到底看到了什么也很重要。上最近的一篇文章给出了示例代码和输出,其中描述了web服务器在发送编程请求时看到的内容。如果您的问题已得到回答,是否将其中一个答案标记为解决方案?
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()