同样的请求在Fiddler中起作用,但在Requets中不起作用

2024-04-18 12:20:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用请求编辑我的Python Instagram简历。我可以很容易地登录和做如下/等,但我被困在编辑个人资料。我总是收到403或400的错误。当我漂亮地打印Python原始请求时,如下所示(这些是我的虚拟帐户的cookies):

POST https://www.instagram.com/accounts/edit/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 
Firefox/58.0
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Host: www.instagram.com
Content-Length: 131
Origin: https://www.instagram.com
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
X-CSRFToken: buJOTJT8lR2XcTL6WU5G9Rviq3mjmhaa
X-Instagram-AJAX: 314b21580dde
DNT: 1
Referer: https://www.instagram.com/accounts/edit/
Accept-Language: et-EE,et;q=0.9,en-US;q=0.8,en;q=0.7,ar;q=0.6
Cookie: mid=W1WlVQALAAEfLNtIlXn2CtR3XAUF; ig_cb=1; mcd=3; 
ds_user_id=8271265936; 
sessionid=IGSCad223c2888974f0472cea36f3
16b1d3caab2feaa3bf519fa3652da183dca2446%3 
ARItc316HmDIUvwjI8BOJCzyvuFkHbeXd%3A%7B%
22_auth_user_id%22%3A8271265936%2C%22_aut 
h_user_backend%22%3A%22accounts.backends.
CaseInsensitiveModelBackend%22%2C%22_auth_user_hash%
22%3A%22%22%2C%22_platform%
22%3A4%2C%22_token_ver%22%3A2%2C%22_tok
en%22%3A%228271265936%3AXMCx3bjvUtWEy3A37
cDnQiQ9ysQBaGw9%3A5aaef5c33915c937439a14292
048d8ae0555d5bf949befcd5a9a8a209808e7c9%22%2C%22
last_refreshed%22%3A1532306445.48 
36139679%7D; rur=PRN; urlgen="{"time": 1532295222, "88.196.120.23": 3249, 
"2001:7d0:8b1b:d80:59ac:b6fd:fc77:754f": 
3249}:1fhOwz:lMzBvH8bTYwoOqWauglUMXbkGCU

以及我的POST数据体:

^{pr2}$

当我通过fiddler发送这个确切的请求时,我得到200个,但是通过Python我得到403或400个。我尝试以原始字符串和dict形式发送数据,但都返回错误。在

代码:

^{3}$

Tags: httpscom编辑www错误contentpostedit
1条回答
网友
1楼 · 发布于 2024-04-18 12:20:20

尝试将cookies传递到请求模块以及头中(尝试使用和不使用)

import http.cookies

str_cookies = """mid=W1WlVQALAAEfLNtIlXn2CtR3XAUF; ig_cb=1; mcd=3; ds_user_id=8271265936; sessionid=IGSCad223c2888974f0472cea36f316b1d3caab2feaa3bf519fa3652da183dca2446%3ARItc316HmDIUvwjI8BOJCzyvuFkHbeXd%3A%7B%22_auth_user_id%22%3A8271265936%2C%22_auth_user_backend%22%3A%22accounts.backends.CaseInsensitiveModelBackend%22%2C%22_auth_user_hash%22%3A%22%22%2C%22_platform%22%3A4%2C%22_token_ver%22%3A2%2C%22_token%22%3A%228271265936%3AXMCx3bjvUtWEy3A37cDnQiQ9ysQBaGw9%3A5aaef5c33915c937439a14292048d8ae0555d5bf949befcd5a9a8a209808e7c9%22%2C%22last_refreshed%22%3A1532306445.4836139679%7D; rur=PRN; urlgen="{\"time\": 1532295222\054 \"88.196.120.23\": 3249\054 \"2001:7d0:8b1b:d80:59ac:b6fd:fc77:754f\": 3249}:1fhOwz:lMzBvH8bTYwoOqWauglUMXbkGCU"""\
cookie_object = http.cookies.SimpleCookie(str_cookies)
cookies = {}
for key, morsel in cookie_object.items():
    cookies[key] = morsel.value

requests.post(.... , cookies=cookies)

我建议您使用这个instagram_private_apipython模块,它已经实现了您可能需要的大多数方法,而不是自己构建它

相关问题 更多 >