如何通过编程更改用户代理字符串?
我想写一个程序,来修改我的用户代理字符串。
我该怎么在Python中做到这一点呢?
7 个回答
2
在Python中,你可以使用urllib这个库来下载网页,并且可以通过设置版本值来更改用户代理(user-agent)。
在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>[…]
3
在 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 请求的方法也有各自设置请求头的方式。
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()