我如何使用 python 请求登录 instagram?
How can i login in instagram with python requests?
你好,我正在尝试使用 python 请求库登录 instagram,但是当我尝试时,instagram 变成了我 "bad requests"。 İ 有谁知道我该如何解决这个问题?
我搜索了这个问题的解决方案,但我没有找到任何东西。请帮忙,谢谢!
它正在工作,但过了一段时间后,它开始转向 "bad request"
这是我的全部代码:
import os
import requests
import getpass
import json
import io
import time
X_SECOND = 60
BASE_URL = "https://www.instagram.com/"
LOGIN_URL = BASE_URL + "accounts/login/ajax/"
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; ) Gecko/20100101 Firefox/65.0"
CHANGE_URL = "https://www.instagram.com/accounts/web_change_profile_picture/"
CHNAGE_DATA = {"Content-Disposition": "form-data", "name": "profile_pic",
"filename": "profilepic.jpg", "Content-Type": "image/jpeg"}
headers = {
"Host": "www.instagram.com",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://www.instagram.com/accounts/edit/",
"X-IG-App-ID": "936619743392459",
"X-Requested-With": "XMLHttpRequest",
"DNT": "1",
"Connection": "keep-alive",
}
session = requests.Session()
session.headers = {'user-agent': USER_AGENT, 'Referer': BASE_URL}
def login():
USERNAME = str(input('Username > '))
PASSWD = getpass.getpass('Password > ')
resp = session.get(BASE_URL)
session.headers.update({'X-CSRFToken': resp.cookies['csrftoken']})
login_data = {'username': USERNAME, 'password': PASSWD}
login_resp = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
print(login_resp.text) # it turns "bad request"
time.sleep(100)
if login_resp.json()['authenticated']:
print("Login successful")
else:
print("Login failed!")
login()
# print(login.json())
session.headers.update({'X-CSRFToken': login_resp.cookies['csrftoken']})
def save():
with open('cookies.txt', 'w+') as f:
json.dump(session.cookies.get_dict(), f)
with open('headers.txt', 'w+') as f:
json.dump(session.headers, f)
def load():
with open('cookies.txt', 'r') as f:
session.cookies.update(json.load(f))
with open('headers.txt', 'r') as f:
session.headers = json.load(f)
def change():
session.headers.update(headers)
try:
print("wow"+str(i))
with open("./data/wow"+str(i)+".png", "rb") as resp:
f = resp.read()
print("1")
p_pic = bytes(f)
print("2")
p_pic_s = len(f)
print("3")
session.headers.update({'Content-Length': str(p_pic_s)})
print("4")
files = {'profile_pic': p_pic}
print("5")
r = session.post(CHANGE_URL, files=files, data=CHNAGE_DATA)
print("6")
if r.json()['changed_profile']:
print("Profile picture changed!")
else:
print("Something went wrong")
time.sleep(X_SECOND)
except Exception as e:
print(e)
pass
time.sleep(10)
if __name__ == "__main__":
i = 0
try:
load()
except:
login()
save()
while True:
if i == 12:
i = 0
i += 1
change()
更新
instaloader 用户现在也遇到了同样的问题
https://github.com/instaloader/instaloader/issues/615
link = 'https://www.instagram.com/accounts/login/'
login_url = 'https://www.instagram.com/accounts/login/ajax/'
time = int(datetime.now().timestamp())
response = requests.get(link)
csrf = response.cookies['csrftoken']
payload = {
'username': username,
'enc_password': f'#PWD_INSTAGRAM_BROWSER:0:{time}:{password}',
'queryParams': {},
'optIntoOneTap': 'false'
}
login_header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://www.instagram.com/accounts/login/",
"x-csrftoken": csrf
}
login_response = requests.post(login_url, data=payload, headers=login_header)
json_data = json.loads(login_response.text)
if json_data["authenticated"]:
print("login successful")
cookies = login_response.cookies
cookie_jar = cookies.get_dict()
csrf_token = cookie_jar['csrftoken']
print("csrf_token: ", csrf_token)
session_id = cookie_jar['sessionid']
print("session_id: ", session_id)
else:
print("login failed ", login_response.text)
您可以在这里找到完整的指南:
Share a post into your Instagram account using the requests library.
你好,我正在尝试使用 python 请求库登录 instagram,但是当我尝试时,instagram 变成了我 "bad requests"。 İ 有谁知道我该如何解决这个问题?
我搜索了这个问题的解决方案,但我没有找到任何东西。请帮忙,谢谢!
它正在工作,但过了一段时间后,它开始转向 "bad request"
这是我的全部代码:
import os
import requests
import getpass
import json
import io
import time
X_SECOND = 60
BASE_URL = "https://www.instagram.com/"
LOGIN_URL = BASE_URL + "accounts/login/ajax/"
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; ) Gecko/20100101 Firefox/65.0"
CHANGE_URL = "https://www.instagram.com/accounts/web_change_profile_picture/"
CHNAGE_DATA = {"Content-Disposition": "form-data", "name": "profile_pic",
"filename": "profilepic.jpg", "Content-Type": "image/jpeg"}
headers = {
"Host": "www.instagram.com",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://www.instagram.com/accounts/edit/",
"X-IG-App-ID": "936619743392459",
"X-Requested-With": "XMLHttpRequest",
"DNT": "1",
"Connection": "keep-alive",
}
session = requests.Session()
session.headers = {'user-agent': USER_AGENT, 'Referer': BASE_URL}
def login():
USERNAME = str(input('Username > '))
PASSWD = getpass.getpass('Password > ')
resp = session.get(BASE_URL)
session.headers.update({'X-CSRFToken': resp.cookies['csrftoken']})
login_data = {'username': USERNAME, 'password': PASSWD}
login_resp = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
print(login_resp.text) # it turns "bad request"
time.sleep(100)
if login_resp.json()['authenticated']:
print("Login successful")
else:
print("Login failed!")
login()
# print(login.json())
session.headers.update({'X-CSRFToken': login_resp.cookies['csrftoken']})
def save():
with open('cookies.txt', 'w+') as f:
json.dump(session.cookies.get_dict(), f)
with open('headers.txt', 'w+') as f:
json.dump(session.headers, f)
def load():
with open('cookies.txt', 'r') as f:
session.cookies.update(json.load(f))
with open('headers.txt', 'r') as f:
session.headers = json.load(f)
def change():
session.headers.update(headers)
try:
print("wow"+str(i))
with open("./data/wow"+str(i)+".png", "rb") as resp:
f = resp.read()
print("1")
p_pic = bytes(f)
print("2")
p_pic_s = len(f)
print("3")
session.headers.update({'Content-Length': str(p_pic_s)})
print("4")
files = {'profile_pic': p_pic}
print("5")
r = session.post(CHANGE_URL, files=files, data=CHNAGE_DATA)
print("6")
if r.json()['changed_profile']:
print("Profile picture changed!")
else:
print("Something went wrong")
time.sleep(X_SECOND)
except Exception as e:
print(e)
pass
time.sleep(10)
if __name__ == "__main__":
i = 0
try:
load()
except:
login()
save()
while True:
if i == 12:
i = 0
i += 1
change()
更新
instaloader 用户现在也遇到了同样的问题 https://github.com/instaloader/instaloader/issues/615
link = 'https://www.instagram.com/accounts/login/'
login_url = 'https://www.instagram.com/accounts/login/ajax/'
time = int(datetime.now().timestamp())
response = requests.get(link)
csrf = response.cookies['csrftoken']
payload = {
'username': username,
'enc_password': f'#PWD_INSTAGRAM_BROWSER:0:{time}:{password}',
'queryParams': {},
'optIntoOneTap': 'false'
}
login_header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://www.instagram.com/accounts/login/",
"x-csrftoken": csrf
}
login_response = requests.post(login_url, data=payload, headers=login_header)
json_data = json.loads(login_response.text)
if json_data["authenticated"]:
print("login successful")
cookies = login_response.cookies
cookie_jar = cookies.get_dict()
csrf_token = cookie_jar['csrftoken']
print("csrf_token: ", csrf_token)
session_id = cookie_jar['sessionid']
print("session_id: ", session_id)
else:
print("login failed ", login_response.text)
您可以在这里找到完整的指南:
Share a post into your Instagram account using the requests library.