Я пытаюсь программно аутентифицировать себя для фэнтезийной игры Премьер-лиги (https://fantasy.premierleague.com/). Когда я проверяю вкладку сети в Chrome Inspect при входе в систему, я вижу следующий пост-запрос и ответ ..
Общая информация:URL запроса: https://users.premierleague.com/accounts/login/
Метод запроса: POSTКод статуса: 302Удаленный адрес: 151.101.86.217:443Политика реферера: no-referer-when-downgrade
Заголовки ответа:диапазоны принятия: байтыконтроль кеша: приватный, без кеша, без хранилища, обязательно повторная проверка, max-age = 0длина контента: 0Тип контента: текст / HTML;кодировка = UTF-8дата: вс, 31 марта 2019 17:22:05 GMTрасположение: https://fantasy.premierleague.com/a/login?state=success
сервер: nginx / 1.13.5set-cookie: csrftoken = cjda9XUQ26ZiXWl0KUbk5GVNNVUSUQZCy70OMZn4TcjapME8pijv7cNI413bPHs8;истекает = вс, 29 марта 2020 г. 17:22:05 мск;Max-Age = 31449600;Path = /set-cookie: messages = "fa4474ff71c7bd5422bf64125057fbc6ed68c6b1 $ [[\" __json_message \ "\ 0540 \ 05425 \ 054 \" Успешно зарегистрирован как. \ "] \ 054 [\" __ json_message \ "\ 0540 \ 05425 \ 054вышли из системы. \ "] \ 054 [\" __json_message \ "\ 0540 \ 05425 \ 054 \" Успешно вошел как. \ "]]";HttpOnly;Path = /set-cookie: sessionid = mruasqjsv9ru8r7qlqk5vauixkt3uq88;истекает = вс, 14 апреля 2019 17:22:05 мск;HttpOnly;Max-Age = 1209600;Путь = / set-cookie: sudo = "V1mmxfTng2qS: 1hAe9l: Kn0n8h3dSwGH-Qv2RbGNn5MrwvE";истекает = вс, 31 марта 2019 20:22:05 GMT;HttpOnly;Max-Age = 10800;Path = /;безопасныйSet-Cookie: pl_profile = eyJzIjogIld6SXNNVFk1T1RZNU5qVmQ6MWhBZTlsOll5aU4zQ3BWb1A0a3l2ZDZUS09LLUNyeHJhdyIsICJ1IjogeyJsbiI6ICJMaW5kYmVyZyIsICJmYyI6IDMsICJpZCI6IDE2OTk2OTY1LCAiZm4iOiAiSmltIn19;Домен = premierleague.com;истекает = вс, 14 апреля 2019 17:22:05 мск;Max-Age = 1209600;Path = /;безопасныйстатус: 302варьировать: Cookieчерез: 1.1 Googleчерез: 1.1 лакx-cache: MISSx-cache-hit: 0x-frame-options: SAMEORIGINx-обслуживаемый: cache-bma1634-BMA
Заголовки запроса: author: users.premierleague.com: метод: POST: путь: / учетные записи / логин /: схема: httpsпринять: текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, изображение / webp, изображение / apng, / ; q = 0,8принять кодировку: gzip, deflate, brязык принятия: sv-SE, sv; q = 0,9, en-US; q = 0,8, en; q = 0,7контроль кеша: max-age = 0длина контента: 186тип содержимого: application / x-www-form-urlencodedcookie: _ga = GA1.2.963283199.1544268407;_gid = GA1.2.530727258.1554052864;csrftoken = xRErJTDda0drIGPICOjvXMHhkjjRRmsO74wbhoZBmKbz5zpHATuVJQ3sTWIIvaXf;messages = "956228cd3e90b2b498670e8d2101699bcec07800 $ [[\" __ json_message \ "\ 0540 \ 05425 \ 054 \" Успешно зарегистрирован как. \ "] \ 054 [\" __ json_message \ "\ 0540 \ 05425 \ 054 \" Вы"]]";_gat = 1;_gat_UA-33785302-1 = 1источник: http://evil.com/
реферер: https://fantasy.premierleague.com/?fail
запросы на обновление без защиты: 1пользовательский агент: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 72.0.3626.121 Safari / 537.36
Данные формы:csrfmiddlewaretoken: OFwVFKPSkKc0AG1hxHekpCSWb1l3Wl35авторизоваться:пароль:приложение: plfpl-webredirect_uri: https://fantasy.premierleague.com/a/login
Я пытаюсь повторить этот почтовый запрос, используя Javascript и Axios.У меня есть следующий код:
authPLfantasy() {
let formData = new FormData();
formData.append('password', '<password>');
formData.append('login', '<username>');
formData.append('redirect_uri', 'https://fantasy.premierleague.com/a/login');
formData.append('app', 'plfpl-web');
let config = {
url: 'https://users.premierleague.com/accounts/login',
method: 'post',
withCredentials: true,
data: formData
};
return axios.request(config);
}
Результат, который я получаю при регистрации, результат этой функции: «Доступ к XMLHttpRequest в« https://users.premierleague.com/accounts/login' из источника »http://localhost:3000' имеетбыл заблокирован политикой CORS: значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком «*», если режим учетных данных запроса «include». Режим учетных данных запросов, инициированных XMLHttpRequestуправляется атрибутом withCredentials. "
Я смутно знаком с CORS, поэтому думаю, что смогу решить его, если долго и достаточно сильно ударить головой о стену, но я слышал, что CORS не будет влиять на отправку запроса по почте через Postman, поэтому я попытался использовать это вместо этого просто посмотреть, смогу ли я заставить это работать. Хотя я получаю ответ «200 OK» с помощью «Почтальона», я не получаю правильный ответ, потому что мне не хватает файлов cookie pl_profile и sessionid. Изменены данные формы в Почтальоне, так что пароль или имя пользователя недопустимы, по-прежнему отображается 200 OK.
Конечной целью является использование Javascript для отправки запроса на публикацию после того, как пользователь отправит необходимые учетные данные после нажатия кнопки в моем приложении React. Необходимые файлы cookie должны быть сгенерированы, чтобы приложение впоследствии могло отправить запрос на получение другой конечной точке, защищенной аутентификацией, и получить информацию оттуда. Я чувствую, что это не должно быть так сложно, но я просто не могу заставить его работать.