2016-10-25 2 views
0

Я пытаюсь войти на сайт, используя запрос в Python 3. К сожалению, я не могу это сделать.Метод отправки Python с запросами

Это информация, которую я получаю от запроса авторизации:

Response Headers:

Cache-Control:no-cache 
Connection:close 
Content-Encoding:gzip 
Content-Type:application/json 

Заголовки запросов:

Accept:application/json, text/plain, */* 
Content-Type:application/json;charset=UTF-8 
Referer:fffff 

Запрос Payload:

{email: "xxx", password: "yyy", _token: "zzz"} 

Мой код:

with requests.Session() as x: 
    url = 'website' 
    USERNAME = "xxx" 
    PASSWORD = "yyy" 
    token = "zzz" 
    x.get(url) 
    x.post(url, data={'email': USERNAME, 'password': PASSWORD, '_token':token}, 
      headers={'Referer':"fffff"}) 
    page = x.get("some_page_I_have_access_after_login") 
    print(page.content) 

Единственный результат для последнего «печати» есть «Пожалуйста, войдите в ....»

Можете ли вы помочь мне с этим?

редактировать:

У меня есть изменения кода на:

url = 'url' 
USERNAME = "xxx" 
PASSWORD = "yyy" 
token = "fff" 
headers = {'Content-type': 'application/json', 'Accept': 'text/plain', 'Referer':'cccc'} 
data = {'email': USERNAME, 'password': PASSWORD, '_token':token} 
x = requests.get(url) 
w = requests.post(url, data=data, headers=headers) 
print(w.status_code) 
page = requests.get("some_url_I_want_access") 
page.raise_for_status() 

Теперь у меня есть четкий статус. Для ш (логин действия) У меня есть статус 200. И есть проблема, потому что, когда я изменил свое имя я еще получил 200 так, что означает, что я не могу войти в

На странице я получил.: 401 Client Error: Несанкционированное для URL: "some_url_I_want_access"

+0

вы уверены, что вы можете отправить учетные данные с помощью JSON? Обычно он отправляется с кодировкой формы. – Andrey

+0

Я этого не знаю, но странно, что я изменил строку x.post (....) на w = x.post (...) и добавлю строку print (w.content) в следующей строке , Кажется, что я зарегистрирован, потому что тогда я получаю html my_page. К сожалению, я по-прежнему получаю ту же ошибку для последнего заявления «print». – Maciejjy

+0

Хорошо, я сделал прогрессы. Я думаю, что знаю, где ошибка. Когда я запускаю свою программу, тело запроса: email = aaa% 40ccc.com & _token = xxx & password = yyy Но когда я обрабатываю запрос рабочего браузера, тело запроса: {"email": "[email protected]", "password" : «yyy», «_ токен»: «xxx»} Это не совсем то же самое, и когда я копирую эту строку из рабочего запроса и вставляю ее в веб-отладчик, мой запрос от python работает. Мне просто нужно написать всю эту строку в Python надлежащим образом. Это может быть трудно для меня. – Maciejjy

ответ

0

Попробуйте это:

import json 
w = requests.post(url, data=json.dumps(data), headers=headers) 
+0

Точно. Это была проблема. Некоторое время назад мне удалось решить эту проблему с помощью некоторой документации, но большое спасибо за вашу помощь Андрею. – Maciejjy

Смежные вопросы