我在使用python登录某个网站时遇到了一些问题。我正在使用post方法,但我认为表单的参数不正确。这是我第一次尝试这样的事情,所以也许我完全错了,欢迎任何形式的帮助。
这是我从网站上得到的:
<form method="post" action="/auth/login" id="login-form" novalidate>
<input type="hidden" name="_token" value="4d1964264067f1789bcbb7b01ca3f8366864ee7c" />
<div class="form-item text username">
<label>Gebruikersnaam</label>
<span><input type="email" name="username" autofocus /></span>
</div>
<div class="form-item text password">
<label>Wachtwoord</label>
<span><input type="password" name="password" /></span>
这是我的代码,
import requests
import mechanize
from bs4 import BeautifulSoup
url = 'aurl.com'
br = mechanize.Browser()
br.set_handle_robots(False)
htmltext = br.open(url).read()
soup = BeautifulSoup(htmltext,"html.parser")
zoek = soup.findAll('input',attrs={'name':'_token'})
zoektekst = zoek[0]["value"]
print _token
Payload = {'password':'??','_token':_token,'username':'??@gmail.com'}
print Payload
r = requests.post("theurl.com",data=Payload)
print r.text
答案 0 :(得分:1)
我已经检查了您的代码,似乎工作正常。然而,如果没有网址和错误消息我不认为任何人都可以回答你的问题为什么它不起作用。
现在猜测 - 表单发布数据到url / auth / login,但你发布到“url.com”
小提示:
#instead of
zoektekst = str(zoek[0])
_token = zoektekst.replace("input"," ").replace("<"," ").replace("name="," ") \
.replace("_token"," ").replace("type="," ") \
.replace("hidden"," ").replace("value="," ") \
.replace("/>","").replace('"','').replace(' ','')
# use
zoektekst = zoek[0]["value"]
# now you can remove this insane amount of replace's
答案 1 :(得分:0)
由于你删除了很多细节,很难确切地说出错误,但假设你的_token
是正确的,我怀疑你的问题是:
r = requests.post("theurl.com",data=Payload)
需要
r = requests.post("theurl.com/auth/login",data=Payload)