如何通过编程更改用户代理字符串?

4 投票
7 回答
8046 浏览
提问于 2025-04-15 12:12

我想写一个程序,来修改我的用户代理字符串。

我该怎么在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()

撰写回答