Python3 - 网址库2 |需要完全删除 "User-Agent" header

Python3 - Urllib2 | Need to remove the "User-Agent" header completely

我需要从 Python3 中的 Urllib-Request 的 header 中删除 User-Agent,但是如果我执行以下操作,它仍然会传输 User-Agent, 只是没有值。

url = "xxx"

headers = {
    "User-Agent": ""
}

req = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(req)

问题是,我需要将 User-Agent 从 header 中完全删除,而不仅仅是空字符串,这样 isset($_SERVER["HTTP_USER_AGENT"] ) 在 php 中会 return 错误。

谢谢, 伦纳特

您可以构建自己的开启器并删除 'User-Agent' header:

#!/usr/bin/env python3
import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [(header, value)
                     for header, value in opener.addheaders
                     if header.casefold() != 'user-agent']

with opener.open(url) as response:
    handle(response)

执行以下操作解决了我的问题。

headers = {
    "User-Agent": None
}

不幸的是,我不得不从 Urllib2 切换到 "requests" 模块,因为对于 Urllib,使用 "None" 会引发错误。

谢谢大家的回复!