Найдите скрытые значения формы - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь выяснить, почему, когда я пытаюсь исследовать веб-сайт в chrome, я вижу переменную. Но при использовании get из запроса это одно значение пропало, и я не знаю почему.

Это ниже из «Chrome»:

<ul id="topMenu" class="clear">
<li class="login flyout">
<div class="divider divleft">&nbsp;</div>
<a href="#" id="loginBoxOpener" title="Logowanie">
<span>Logowanie</span>
</a>
<div class="divider divright">&nbsp;</div>
<form id="login" name="login" action="https://shop.murrelektronik.pl/index.php?" method="post">
<div id="loginBox" class="loginBox" style="display: none;">
<input type="hidden" name="stoken" value="88ED0243">
<input type="hidden" name="lang" value="14">
<input type="hidden" name="actcontrol" value="start">
<input type="hidden" name="fnc" value="login_noredirect">
<input type="hidden" name="cl" value="start">
<input type="hidden" name="pgNr" value="0">
<input type="hidden" name="CustomError" value="loginBoxErrors">
<div class="loginForm">
<h4>Logowanie</h4>
<p>

Позже я использовал:

login_user = self.req.get(self.url_login)
        soup = BeautifulSoup(login_user.content, 'html.parser')
        print(soup.contents)

И получить из этой части:

<ul class="clear" id="topMenu">
<li class="login flyout">
<div class="divider divleft"> </div>
<a href="#" id="loginBoxOpener" title="Logowanie">
<span>Logowanie</span>
</a>
<div class="divider divright"> </div>
<form action="https://shop.murrelektronik.pl/index.php?lang=14&amp;" id="login" method="post" name="login">
<div class="loginBox" id="loginBox">
<input name="lang" type="hidden" value="14"/>
<input name="actcontrol" type="hidden" value="start"/>
<input name="fnc" type="hidden" value="login_noredirect"/>
<input name="cl" type="hidden" value="start"/>
<input name="pgNr" type="hidden" value="0"/>
<input name="CustomError" type="hidden" value="loginBoxErrors"/>
<div class="loginForm">
<h4>Logowanie</h4>
<p>

В этом варианте я теряю переменную «stoken», но мне нужно, чтобы она удерживала сеанс при попытке войти в webst ie : (

<input type="hidden" name="stoken" value="88ED0243">

У кого-то могут быть такие же проблемы?: (

Редактировать 03.08.2020 12:12 А что, если мне нужно сначала использовать POST, потому что тогда я получаю "заглушенный") Я создаю свои «Данные формы» с помощью session_stoken. Затем я снова отправляю POST с помощью «login_data», но все еще не вошел в систему. Значение в файлах cookie: SID, когда я читаю на каждом этапе (POST, GET и POST всегда одинаковы. Так что я думаю, что это сеанс активен, но еще не зарегистрирован.

1 Ответ

0 голосов
/ 03 августа 2020

Я просмотрел веб-сайт и думаю, что нашел решение.

Когда вы делаете запрос GET, вы не получаете ни файлы cookie, ни stoken.

To чтобы получить их оба, вы просто делаете запрос POST и получаете файлы cookie сеанса.

Каждый раз, когда вы делаете запросы с этими файлами cookie, значение stoken не изменяется.

r = requests.post('https://shop.murrelektronik.pl/index.php')  # `stoken` available
cookies = r.cookies   # extract cookies

# extract `stoken` value
stoken_value = BeautifulSoup(r.text, 'html.parser')\
                    .find('div', {'class': 'loginBox'})\
                    .find('input', {'name': 'stoken'})['value']

# Fill in the data (note: I have not checked the actual fields' names)
data = {'username': 'JohnDoe', 'password': 'p@ssW0rD', 'stoken': stoken_value}

# login request
r = requests.post('https://shop.murrelektronik.pl/index.php', cookies=cookies, data=data)

Это должно позволить вам войти на сайт.

...