gpt4 book ai didi

python - 使用 python、HTTP/1.1 和自定义用户代理发布表单数据

转载 作者:行者123 更新时间:2023-12-01 06:14:50 25 4
gpt4 key购买 nike

我有一个需要将数据发布到的表单,但是它必须具有特定的用户代理字符串和 HTTP/1.1 header (不仅仅是主机,它在 POST 字符串中显式查找 HTTP/1.1。)

到目前为止我已经尝试过以下操作:

class AppURLopener(urllib.FancyURLopener):
version = "The User Agent String"

urllib._urlopener = AppURLopener()

def send_data(url, kv)
params = urllib.urlencode(kv)
f = urllib.urlopen(url, params)
data = f.read()
f.close()

但是,这是通过带有 Host: header 的 HTTP/1.0 提交的。查看 urllib (和 urllib2)的源代码看起来代码路径都实例化了一个 HTTPLib HTTP 类对象,该对象从 1.5 开始被标记为兼容类...有没有一种简单的方法可以让 urllib/URLOpener 使用 HTTPConnection 而不是 HTTP?或者我是否缺少另一个解决方案来获得我需要的正确 header ?

最佳答案

cURL 允许更多的定制——它可以通过 pycurl 包用于 Python。也许像下面这样的东西可以满足您的需求:

import pycurl
import StringIO

response = StringIO.StringIO()
curl = pycurl.Curl()
curl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_1_1)
curl.setopt(pycurl.USERAGENT, 'Mozilla/5.0 [...]')

curl.setopt(pycurl.WRITEFUNCTION, response.write)
curl.setopt(pycurl.URL, 'http://path.to/form')
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.POSTFIELDS, 'form input')

curl.perform()
print response.getvalue()

有一个list of configurable options在 cURL 网站上,其中大部分可以通过上面所示的方式在 pycurl 中访问 (pycurl.OPTION_NAME)。

关于python - 使用 python、HTTP/1.1 和自定义用户代理发布表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3873376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com