gpt4 book ai didi

python - 使用 Python 的请求重新创建带有 WebKitFormBoundary 的 POST 请求

转载 作者:行者123 更新时间:2023-12-03 20:29:57 32 4
gpt4 key购买 nike

我正在尝试使用 Python 的 POST 请求从网站上抓取一些数据 requests图书馆。不幸的是,我无法发布该页面的链接,因为您必须登录该网站才能使用它。

我尝试复制的请求的文件扩展名为 .ehtml,这是我希望重新创建的请求有效负载的一部分:

------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="session_id"

W0pNKn8AAQEAACD-XkYAAAAJ
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="p_session_id"

W0pMOH8AAQEAABZSUVkAAAAD
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="attach_key"


------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="chosen"

0
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="debug"


------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="language"

en
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="game_system_id"

NULL
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="collection_detail_id"

NULL
------WebKitFormBoundary8rntuVzldIBHkILv
Content-Disposition: form-data; name="competition_id"

NULL

使用 stackoverflow 上的一些问题的一些帮助,我已经成功地重新创建了它:
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="session_id"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="p_session_id"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="attach_key"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="chosen"

0
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="debug"


--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="language"

en
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="game_system_id"

NULL
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="collection_detail_id"

NULL
--30b11983bde849109a3dc93e139e16d4
Content-Disposition: form-data; name="competition_id"

NULL

这是使用以下代码完成的:
Q = {
"session_id" : (None,""),
"p_session_id" : (None,""),
"attach_key" : (None,""),
"chosen" : (None,"0"),
"debug" : (None,""),
"language" : (None,"en"),
"game_system_id" : (None,"NULL"),
"collection_detail_id" : (None,"NULL"),
"competition_id" : (None,"NULL")
}


with requests.Session() as s:
p = s.post(login_URL2,data=payload)
#print(p.text)

#d = s.post(req_url,files=Q)
d2 = Request("POST",req_url,files=Q)


d3 = d2.prepare()
print(d3.body.decode('utf-8'))

我相信我缺少的最后一件事是 WebKitFormBoundary 部分,我无法在任何地方找到如何插入该部分。这是我第一次使用 .ehtml 文件进行抓取,所以如果我错过了其他明显的内容,非常感谢所有帮助。

最佳答案

import requests
import random,string
from requests_toolbelt import MultipartEncoder

fields = {
'file': ('test.png', your_data, "image/png"),
'file_id': "0"
}
boundary = '----WebKitFormBoundary' \
+ ''.join(random.sample(string.ascii_letters + string.digits, 16))
m = MultipartEncoder(fields=fields, boundary=boundary)

headers = {
"Host": "xxxx",
"Connection": "keep-alive",
"Content-Type": m.content_type
}

req = requests.post('https://xxxx/api/upload', headers=headers, data=m)
print(req.text)
这样我们就可以制作像 ------WebKitFormBoundary8rntuVzldIBHkILv这样的边界格式.

关于python - 使用 Python 的请求重新创建带有 WebKitFormBoundary 的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51349340/

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