使用请求登录Python Instagram

问题描述 投票:0回答:1

我正在尝试使用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,我严格要根据要求来做。

python-requests python-3.7 instagram-api
1个回答
0
投票

尝试使用此代码:

import requests

#Creating URL, usr/pass and user agent variables

BASE_URL = 'https://www.instagram.com/'
LOGIN_URL = BASE_URL + 'accounts/login/ajax/'
USERNAME = '****'
PASSWD = '*******'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
 Chrome/59.0.3071.115 Safari/537.36'

#Setting some headers and refers
session = requests.Session()
session.headers = {'user-agent': USER_AGENT}
session.headers.update({'Referer': BASE_URL})


try:
    #Requesting the base url. Grabbing and inserting the csrftoken

    req = session.get(BASE_URL)
    session.headers.update({'X-CSRFToken': req.cookies['csrftoken']})
    login_data = {'username': USERNAME, 'password': PASSWD}

    #Finally login in
    login = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
    session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})

    cookies = login.cookies

    #Print the html results after I've logged in
    print(login.text)

#In case of refused connection
except requests.exceptions.ConnectionError:
    print("Connection refused")

我在this Youtube视频中找到了它。它对我有用,我希望它也对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.