Python просит войти или заполнить форму - PullRequest
0 голосов
/ 27 октября 2019

Как заполнить форму и получить URL перенаправления из логина.

Здравствуйте, я пытаюсь отправить страницу входа.

Пробовал несколько страниц, но не получилось.

<div class="form-group">
        <input name="ctl00$MainContent$ctlLogin$_UserName" type="text" size="18" id="ctl00_MainContent_ctlLogin__UserName" accesskey="u" tabindex="60" placeholder="username" class="form-control" name="username" title="username" />
        </div>
        <div class="form-group">
        <input name="ctl00$MainContent$ctlLogin$_Password" type="password" size="18" id="ctl00_MainContent_ctlLogin__Password" accesskey="p" tabindex="61" onkeyup="onkey(event, this.value, this)" placeholder="password" class="form-control" name="password" title="password" />
        </div>
        <input type="submit" name="ctl00$MainContent$ctlLogin$BtnSubmit" value="Login" id="ctl00_MainContent_ctlLogin_BtnSubmit" class="btn btn-danger" style="text-transform: uppercase;" />

        <input name="ctl00$MainContent$ctlLogin$_IdBook" type="hidden" id="ctl00_MainContent_ctlLogin__IdBook" />
        <input name="ctl00$MainContent$ctlLogin$Redir" type="hidden" id="ctl00_MainContent_ctlLogin_Redir" value="wager/welcome.aspx" />

import requests
import json
url = 'http://playsports365.com'
data = requests.get(url)
print(data.text)
form_data = {"username":"username","password":"password","action":"login"}
s = requests.session()
r = s.post(url,form_data)

но почему-то он все еще занимает первую страницу или страницу входа.

1 Ответ

0 голосов
/ 03 ноября 2019

Вы должны соскрести значения __VIEWSTATE, __VIEWSTATEGENERATOR, __EVENTVALIDATION, ctl00$MainContent$ctlLogin$BtnSubmit, ctl00$MainContent$ctlLogin$Redir с домашней страницы и добавить их в свои данные формы.

import requests
import bs4 as bs

# Create session.
session = requests.Session()

headers = {
    'Host': 'playsports365.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Origin': 'http://playsports365.com',
    'Referer': 'http://playsports365.com/default.aspx',
}

# Add headers in session.
session.headers.update(headers)

# Login page request.
login_page_url = 'http://playsports365.com/default.aspx'
response = session.get(login_page_url)

soup = bs.BeautifulSoup(response.text, 'lxml')

# Extract payload data from login page.
event_target = soup.find('input', {'id': '__EVENTTARGET'}).get('value')
event_argument = soup.find('input', {'id': '__EVENTARGUMENT'}).get('value')
view_state = soup.find('input', {'id': '__VIEWSTATE'}).get('value')
view_state_generator = soup.find('input', {'id': '__VIEWSTATEGENERATOR'}).get('value')
event_validation = soup.find('input', {'id': '__EVENTVALIDATION'}).get('value')
btn_submit = soup.find('input', {'name': 'ctl00$MainContent$ctlLogin$BtnSubmit'}).get('value')
re_dir = soup.find('input', {'name': 'ctl00$MainContent$ctlLogin$Redir'}).get('value')


# Add data in payload.
form_data = {
    'ctl00$MainContent$ctlLogin$_UserName': 'YOUR USERNAME',
    'ctl00$MainContent$ctlLogin$_Password': 'YOUR PASSWORD',
    '__EVENTTARGET': event_target,
    '__EVENTARGUMENT': event_argument,
    '__VIEWSTATE': view_state,
    '__VIEWSTATEGENERATOR': view_state_generator,
    '__EVENTVALIDATION': event_validation,
    'ctl00$MainContent$ctlLogin$BtnSubmit': btn_submit,
    'ctl00$MainContent$ctlLogin$Redir': re_dir,
}

# Request for login.
login_url = 'http://playsports365.com/default.aspx'
login_response = session.post(login_url, data=form_data)

print(login_response.status_code, response.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...