Я пытаюсь веками войти в систему https://angel.co/users/login с помощью модуля запросов pythons. Проблема в том, что я получаю код статуса 404 каждый раз, когда запускаю код, хотя я знаю, что URL существует. Я думаю, проблема в том, что форма в url имеет атрибут действия с относительной ссылкой. Я понятия не имею, как это исправить, и мне не повезло найти решение.не удалось войти на сайт с запросами
Вот код, я использую:
import requests
with requests.Session() as s:
url = 'https://angel.co/users/login'
payload = { 'user[email]' : 'username_here',
'user[password]' : 'password_here'}
r = s.post(url, data=payload)
print r.status_code # This is printing 404
Вот код, который я закончил с использованием:
import requests
from bs4 import BeautifulSoup
from login_details import username, password # This is just a script with my username and password
s=requests.session()
main_url="https://angel.co/login?utm_source=top_nav_home"
s.headers = {'Content-Type' : 'application/x-www-form-urlencoded',
'Host' : 'angel.co',
'Origin' : 'https://angel.co',
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64)' \
'AppleWebKit/537.36 (KHTML, like Gecko) ' \
'Chrome/44.0.2403.157 ' \
'Safari/537.36',
'Referer' : main_url,
'Upgrade-Insecure-Requests' : '1'}
response = s.get(main_url)
soup = BeautifulSoup(response.content)
payload={'login_only' : 'true',
'user[email]' : username,
'user[password]' : password,
'authenticity_token' : soup.find(attrs={'name' : 'authenticity_token'})['value'],
'utf8' : '%25E2%259C%2593'}
#the value of utf8 gets urlencoded once you send the request.
response = s.post("https://angel.co/users/login", data = payload)
print response.status_code
Благодаря Thothadri и блэкджек.
Существует CSRF маркер в форме, которую вы должны предоставить в течение 'Post' – mshsayem
Эй, я только что прошел через сайт, и вы дали imcomplete информацию. Для полезной нагрузки требуется следующая информация: «токен аутентификации», «login_only», «utf-8». Я бы предложил вам использовать контрольный элемент в хроме и понять правильные запросы –
Ну, я сделал то же самое. Но главное, ему нужен токен csrf, который является динамическим; тогда как остальные являются статическими (за исключением почты и прохода). – mshsayem