我想使用 python 请求访问 Instagram 上的帐户信息。我可以访问用户 ID,但是当我尝试访问帐户信息时,出现错误。我什至不确定我是否是通过单点登录来完成的。我想做的是如何登录我的 Instagram 帐户并用它进行交易?
import requests
import re
s = requests.session()
s.get("https://www.instagram.com/")
payload = {
"enc_password":"#PWD_INSTAGRAM_BROWSER:0:0:hello123",
"queryParams": {},
"trustedDeviceRecords": {},
"username": "censor",
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
}
cookie_cek = s.get(
"https://www.instagram.com/api/v1/web/accounts/login/ajax/", headers=headers
)
csrftoken = s.cookies.get("csrftoken")
headers2 = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36",
"x-csrftoken": csrftoken,
}
r = s.post(
"https://www.instagram.com/api/v1/web/accounts/login/ajax/",
data=payload,
headers=headers2,
)
print(r.text)
cookies_cek = s.get("https://www.instagram.com/")
cookie_list = "; ".join([f"{cookie.name}={cookie.value}" for cookie in s.cookies])
# print(cookie_list)
hesap_bilgisi_cek = s.get("https://www.instagram.com/kevin/")
search_pattern = re.compile(rb'"id":"(\d+)"')
match = search_pattern.search(hesap_bilgisi_cek.content)
if match:
userid = match.group(1).decode("utf-8")
print("userid:", userid)
else:
print("error.")
get_account_info = s.get(
"https://i.instagram.com/api/v1/users/" + userid + "/info/", headers=headers2
)
print(get_account_info.content)
输出是这样的:
{"user":true,"userId":"censor","authenticated":true,"oneTapPrompt":true,"status":"ok"}
userid: 3
b'{"message":"useragent mismatch","status":"fail"}'
[Program finished]
我想毫无问题地访问我想要的帐户的信息。
错误= b'{“消息”:“用户代理不匹配”,“状态”:“失败”}'
我终于解决了这个问题,如果你遇到这个问题,你可以使用官方用户代理,这里有一个例子:
Mozilla/5.0(iPhone;CPU iPhone OS 12_3_1,如 Mac OS X)AppleWebKit/605.1.15(KHTML,如 Gecko)Mobile/15E148 Instagram 105.0.0.11.118(iPhone11,8;iOS 12_3_1;en_US;en-US;比例=2.00;828x1792;165586599)