关于避免使用私有Isntagram APi的403,需要您的建议。
我在web上重用了一个isntagram 刮刀代码。我已经做了几次尝试,即使有标题和cookie,也都是下一个。从post url获取信息并提取它没有问题。尽管如此,在几个页面上发布评论并切换到另一个页面,我需要进行身份验证。这只是测试身份验证的第一步。
from botocore.vendored import requests
import urllib.parse
import hashlib
import json
def lambda_handler(event, context):
CHROME_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
def getSession(rhx_gis, csrf_token, variables):
""" Get session preconfigured with required headers & cookies. """
#"rhx_gis:csfr_token:user_agent:variables"
print(variables)
values = "%s:%s:%s:%s" % (
rhx_gis,
csrf_token,
CHROME_UA,
variables)
x_instagram_gis = hashlib.md5(values.encode()).hexdigest()
session = requests.Session()
session.headers = {
'user-agent': CHROME_UA,
'x-instagram-gis': x_instagram_gis
}
print(x_instagram_gis)
session.cookies.set('ig_pr', '2')
session.cookies.set('csrftoken', csrf_token)
return session
def runX():
session = requests.Session()
session.headers = { 'user-agent': CHROME_UA }
response = session.get("https://www.instagram.com/selenagomez")
data = json.loads(response.text.split("window._sharedData = ")[1].split(";</script>")[0])
csrf = data['config']['csrf_token']
rhx_gis = data['rhx_gis']
variables = '{"id":"460563723","first":10,"after":"AQBf8puhlt8nU2JzmYdMMTuH0FbMgUM1fnIOZIH7n94DM4VLWkVILUAKVB-5dqvxQEI-Wd0ttlEDzimaaqwC98jccQaDQT4tSF56c_NlWi_shg"}'
session = getSession(rhx_gis, csrf, variables)
query_hash = '33ba35852cb50da46f5b5e889df7d159'
encoded_vars = urllib.parse.quote(variables, safe='"')
url = 'https://www.instagram.com/graphql/query/?query_hash=%s&variables=%s' % (query_hash, encoded_vars)
print(url)
opp = session.get(url)
print(opp.status_code)
runX();更新4月16日->固定
发布于 2018-04-23 14:56:43
截至2018年4月23日,您似乎不再需要cookie管理或csrf令牌。以下是你所需要的一切:
def getSession(rhx_gis, variables):
values = "%s:%s" % (
rhx_gis,
variables)
x_instagram_gis = hashlib.md5(values.encode()).hexdigest()
session = requests.Session()
session.headers = {
'x-instagram-gis': x_instagram_gis
}
return session发布于 2018-04-16 02:30:45
Instagram更改了API。现在需要注意了。没有auth就无法使用instagram graphql。
您还可以在这里检查api是否需要auth。如果没有回报,它意味着需要更多。
$ curl https://www.instagram.com/graphql/query/?query_hash=42323d64886122307be10013ad2dcc44&variables={"id":"460563723","first":10,"after":"AQBf8puhlt8nU2JzmYdMMTuH0FbMgUM1fnIOZIH7n94DM4VLWkVILUAKVB-5dqvxQEI-Wd0ttlEDzimaaqwC98jccQaDQT4tSF56c_NlWi_shg"}发布于 2018-04-16 13:57:52
从x-instagram-gis中删除CHROME_UA。
https://stackoverflow.com/questions/49847376
复制相似问题