查找隐藏的表单值

2024-06-16 14:15:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出原因,当我尝试用chrome浏览网站时,我看到了变量。但当使用get from请求时,这个值消失了,我不知道为什么

下面这一条来自“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”,但我需要它来在尝试登录webstie时保持会话:(

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

有些人可能也有同样的问题

编辑03.08.2020 12:12 如果我需要先使用POST,因为我得到了“stoken”,然后我用session\u stoken创建了我的“表单数据”。然后我用“login\u Data”再次发布,但仍然没有登录。 cookies中的值:当我在每个步骤(POST、GET和POST)中读取时,SID总是相同的。 因此,我认为它的会话处于活动状态,但仍然没有记录


Tags: namedividinputvaluetypeloginstart
1条回答
网友
1楼 · 发布于 2024-06-16 14:15:27

我浏览了网站,我想我找到了解决办法

当您发出GET请求时,您既得不到cookies,也得不到stoken

要获得这两个cookie,只需发出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)

这样你就可以登录网站了

相关问题 更多 >