簡體   English   中英

Instagram 使用 python-requests、cookies 登錄錯誤

[英]Instagram login with python-requests, cookies error

我試圖在請求的幫助下登錄 Instagram ......我按照這個答案https://stackoverflow.com/a/65892587/13419605

這在我的筆記本電腦上很好用,但是服務器端有這個錯誤。

環境:

  1. Ubuntu 18.04
  2. python 3.6.9
  3. 請求 2.25.1

代碼:

import requests
import datetime

session = requests.session()
def login(session, username, password):
    """Login to Instagram"""

    time = str(int(datetime.datetime.now().timestamp()))
    enc_password = f"#PWD_INSTAGRAM_BROWSER:0:{time}:{password}"

    
    # set a cookie that signals Instagram the "Accept cookie" banner was closed
    session.cookies.set("ig_cb", "2")
    session.headers.update({'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)\
 Chrome/59.0.3071.115 Safari/537.36'})
    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()


login(session, 'username', 'password')

錯誤:

Traceback (most recent call last):
  File "login.py", line 38, in <module>
    login(session, 'username', 'password')
  File "login.py", line 30, in login
    session.headers.update({'X-CSRFToken': login.cookies['csrftoken']})
  File "/django/venv/lib/python3.6/site-packages/requests/cookies.py", line 328, in __getitem__
    return self._find_no_duplicates(name)
  File "/django/venv/lib/python3.6/site-packages/requests/cookies.py", line 399, in _find_no_duplicates
    raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path))
KeyError: "name='csrftoken', domain=None, path=None"

這是因為登錄cookies中沒有csrftoken。 Instagram 阻止來自服務器的請求。 使用代理可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM