我想使用Python3中的Requests库登录Mediawiki网站。你知道吗
我已经寻找类似的主题,但解决方案,我结束了没有工作。你知道吗
我要使用的登录公式如下所示:
<form name="userlogin" class="mw-ui-vform" method="post" action="/index.php?title=Spezial:Anmelden&action=submitlogin&type=login&returnto=Hauptseite">
<section class="mw-form-header"></section>
<div class="mw-ui-vform-field">
<label for='wpName1'> Benutzername </label>
<input class="loginText mw-ui-input" id="wpName1" tabindex="1" autofocus="" placeholder="Gib deinen Benutzernamen ein" name="wpName"/>
</div>
<div class="mw-ui-vform-field">
<label for='wpPassword1'> Passwort </label>
<input class="loginPassword mw-ui-input" id="wpPassword1" tabindex="2" placeholder="Gib dein Passwort ein" type="password" name="wpPassword" />
</div>
<div class="mw-ui-vform-field">
<div class="mw-ui-checkbox">
<input name="wpRemember" type="checkbox" value="1" id="wpRemember" tabindex="4">
<label for="wpRemember"> Angemeldet bleiben</label>
</div>
</div>
<div class="mw-ui-vform-field">
<input id="wpLoginAttempt" name="wpLoginAttempt" tabindex="6" type="submit" value="Anmelden" class="mw-ui-button mw-ui-constructive" />
</div>
<div class="mw-ui-vform-field mw-form-related-link-container" id="mw-userlogin-help">
<a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Logging_in">Hilfe beim Anmelden</a>
</div>
<div class="mw-ui-vform-field mw-form-related-link-container">
<a href="/index.php/Spezial:Passwort_neu_vergeben" title="Spezial:Passwort neu vergeben">Passwort vergessen?</a>
</div>
<input type="hidden" value="9a57c2f503220304d0cc80633bad12d1" name="wpLoginToken" />
</form>
我的代码如下:
import requests
import re
a=('user','pass')
postloginurl='https://example.com/index.php?title=Spezial:Anmelden&action=submitlogin&type=login&returnto=Hauptseite'
requesturl='https://example.com/index.php/Hauptseite'
with requests.Session() as session:
session.auth=a
#finding the logintoken for the formular
get = session.get(postloginurl)
m=re.search('value="(?P<logintoken>.*)" name="wpLoginToken"',get.text)
logintoken=m.group('logintoken')
#fill out the login formular
name=input('name:')
password=input('password:')
payload={'action': 'login', 'wpName':name, 'wpPassword':password, 'wpRemember':'1' , 'wpLoginAttempt':'Anmelden', 'wpLoginToken':logintoken, 'submit':'submit'}
post = session.post(postloginurl, data=payload)
#test if I'm logged in
r = session.get(requesturl)
print(r.text)
#here it says: ""wgUserName":null" in the head, so I'm not logged in
该网站还使用了身份验证,所以我需要的身份验证部分。 我还尝试管理logintoken,每当我开始新的会话时,它都会发生变化。你知道吗
你们知道什么是错误的吗?或者我可以测试什么来找出我的错误?你知道吗
您必须将
headers
添加到登录请求中。无需将“user”和“pass”添加到session.auth
。你知道吗并且可以在
response.text
(“wgUserName”:“您的用户名”)中找到您的用户名相关问题 更多 >
编程相关推荐