我正在尝试使用 python 登录 Instagram。我能够获得 csrf 令牌,但是requests.Session().post()
似乎没有正确地将登录数据发布到网站。我总是得到class="no-js not-logged-in client-root"
。我已经搜索了一段时间,也尝试登录一些似乎有效的随机网站。在登录方法中我只是启动一个requests.Session()
并向https://www.instagram.com/accounts/login/以登录名和密码作为data
范围。
def login(self):
with requests.Session() as s:
p = s.post(self.loginUrl, data=self.loginData, allow_redirects=True)
另外,请不要告诉我使用 Selenium,我严格要求按照请求来执行此操作。
目前(2021 年 1 月)使用 Python 登录 Instagram 的可行解决方案如下:
def login(username, password):
"""Login to Instagram"""
time = str(int(datetime.datetime.now().timestamp()))
enc_password = f"#PWD_INSTAGRAM_BROWSER:0:{time}:{password}"
session = requests.Session()
# set a cookie that signals Instagram the "Accept cookie" banner was closed
session.cookies.set("ig_cb", "2")
session.headers.update({'user-agent': self.user_agent})
session.headers.update({'Referer': 'https://www.instagram.com'})
res = session.get('https://www.instagram.com')
csrftoken = None
for key in res.cookies.keys():
if key == 'csrftoken':
csrftoken = session.cookies['csrftoken']
session.headers.update({'X-CSRFToken': csrftoken})
login_data = {'username': username, 'enc_password': enc_password}
login = session.post('https://www.instagram.com/accounts/login/ajax/', data=login_data, allow_redirects=True)
session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
cookies = login.cookies
print(login.text)
session.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)