Python requests | Как залогинится на сайт(EA, Battlelog)?
Имею дело с авторизацией в battllelog через EA, под библиотекой requests на языке python в целях сбора информации о своем аккаунте, интереса и опыта.
Картинка: для тех кому нужна Form Data
Я не нашел в интернете как логинится на сайт в моем случае, серьезно, даже индус из видео не смог мне помочь. Я делал в точности по инструкции из того видео, после неудачных попыток я дописал другой код с различных сайтов.
!ГЛАВНАЯ ПРОБЛЕМА!
Соль в том, что везде при логине они (чудо индусы) находятся на одном сайте, а в моем случае, при логине в баттллог, меня перекидывает на login EA, то есть абсолютно другой сайт, где ты вводишь свои данные и лично мне непонятным образом перенаправляет обратно в баттллог с уже залогининым аккаунтом. Моя цель это пройти этот этап логина, зайти в свой баттллог и уже дальше работать с данными которые я смогу получить с аккаунта.
Я перепробовал кучу вариаций, и не одна из них не заработала, только в одном случае, я смог найти хотя бы то что я отправлял. Но это было не то чего я во всяком случае ожидал.
Картинка: Передаю через post данные о почте, они где то вставляются, и как с ними работать дальше не понятно, в данном случае в форму, я передал 'email': '[email protected]'
КОД:
import requests
from bs4 import BeautifulSoup
#Мой агент
headers = {
#'Cookie': '__utma=22379560.469673333.1585579700.1585579700.1585579700.1; __utmc=22379560; __utmz=22379560.1585579700.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ak_bmsc=BCCD82E020450E2A0A6A6D82A46A938450EFFFF1BC410000AE06825EB07E342D~plMxJ5act0CXH//pQu8QVfWEjF0wKwDKlME5G5LjmjdtoeHT76TJwzFFvEM136V9KkgX+Y9WWTV25FqR5YYNywk5xUFkh4LjRuLKYWxAbZp2PlZAqQ/O8Zn4EpGy/6Ud770gsAWkAY/Di42DBybCGIfnADTKeRRgD21ahl23o2aS0+bDTiJ0UxANLqAMc0cXcAOwVL8c/4cO0d6HXYyOQ3RAFnooACHw1pVbkCpnsIOWJy3n4lhOevWD0n/sBJND9c; beaker.s.id=a814682ce6e84035e971e98852390e5c; ssoremember=1; comcenter.flushedOk=1; comcenter.isInSync=1; __utmv=22379560.|1=userid=1004180203082=1^4=Customer=YES=1^31=Platform=PS3=1; __utmb=22379560.7.6.1585580108414; bm_sv=10EAAE20AD8F54F00C47686D13C39D37~u+yDNhj/z85akvgLBy5XY8FHS6ADdWFD5wQssqNkJ1svXFOAq4OQ+NBXGqEnYav7A/3cEEv+8/grrOl1r+9HAuUpNhGU3Z6DbTWGmoPP2DvRmQ1VHYSrXt0GA0evwxeI1b2iVqV6tzkUKbldg7NOYy2GQp85TNdwdAgSTWtUgmM=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 OPR/67.0.3575.97 (Edition Yx 02)'
}
#Payload в ea login
payload = {
"email": "[email protected]",
"password": "password",
"pn_text": "",
"passwordForPhone": "",
"country": "RU",
"phoneNumber": "",
"_rememberMe": "on",
"rememberMe": "on",
"_eventId": "submit",
"gCaptchaResponse": "",
"isPhoneNumberLogin": "false",
"isIncompletePhone": ""
}
#Открыл сессию
s = requests.Session()
url = 'https://battlelog.battlefield.com/bf4'
r = s.get(url, headers=headers)
#Беру с баттллога ссылку на сайт с формой для входа
soup = BeautifulSoup(r.content, 'html.parser')
login_url = soup.find("a", class_="btn btn-primary btn-large btn-login")['href']
#Логинюсь
r = s.post(login_url, data=payload, headers=headers)
print(r.text) #На картинке часть результата от работы
# ЧТО ДЕЛАТЬ ДАЛЬШЕ ОСТАЕТСЯ ДЛЯ МЕНЯ ЗАГАДКОЙ :(
Мучаюсь с этим уже 8 часов, помогите.
Сайт Battlelog: https://battlelog.battlefield.com/bf4/ Логин через EA там же -> кнопка LOG IN
Ответы (1 шт):
Уберсложный сайт. То, что ты увидел в видео, к твоему случаю отношения не имеет. Делать нужно примерно так:
import requests
from bs4 import BeautifulSoup as bs
values = {
'email': 'mail',
'password': 'pass',
'_eventId': 'submit',
'pn_text': '',
'passwordForPhone': '',
'country': 'RU',
'phoneNumber': '',
'_rememberMe': 'on',
'gCaptchaResponse': '',
'isPhoneNumberLogin': 'false',
'isIncompletePhone': '',
'countryPrefixPhoneNumber': ''
}
with requests.Session() as s:
r = s.get('https://battlelog.battlefield.com/bf4/')
soup = bs(r.content, 'lxml')
link = soup.find('a', class_='login-btn')['href']
log_in = s.get(link) # обрати внимание, что делается здесь.
rs = s.post(log_in.url, data=values) # и здесь
Но, помимо миллиарда редиректов, он ещё создаёт вебсокет.
Самым простым решением будет использование Selenium.
P.S. решил 60 капч чтобы зарегаться