簡體   English   中英

根據請求登錄網站

[英]Logging into website with requests

我有這種形式,但是我不確定如何創建有效地執行此操作的有效負載。

<form method="post" action="/login" name="loginform" id="loginForm">
    <fieldset id="fs">
        <label for="username">Username:
        <input type="text" id="username" name="username" />
        </label>

        <label for="password">Password:
        <input type="password" id="password" name="password" />
        </label>

        <input type="hidden" name="act" value="login" />
        <input name="submit" type="submit" id="submit" value="Login" />
    </fieldset>
</form>

我嘗試做payload = {"username":"blah","password":"blah"}; r=requests.post(url, data=payload) payload = {"username":"blah","password":"blah"}; r=requests.post(url, data=payload)但是我沒有得到期望的響應; 也就是說, r.text中沒有預期的“登錄失敗”行。 但是,當我填寫表格並嘗試通過瀏覽器首次登錄時,它表明這是我的第二次登錄失敗。

我正在使用的網站特別是www.thepiratebay.se,而我正在努力的目標是能夠以編程方式上傳一個torrent文件。

- -編輯 - -
我正在使用的新代碼是

import requests
user = "username"
pswd = "password"
url = "http://www.thepiratebay.se/login"
payload = {
    "act":"login",
    "username":user,
    "password":pswd,
    "submit":"Login"
}
r = requests.post(url, data=payload, allow_redirects=True)
print r.text

還是行不通! r.text只是默認的登錄頁面。 還有建議嗎?

使用firebug net選項卡跟蹤實際發送的參數,這是我嘗試一下時得到的:

act          login
password     password
submit       Login
username     username

Source
username=username&password=password&act=login&submit=Login

最后,我使用了一個不同的模塊,即斜紋織物,來完成我想做的事情。 我認為斜紋實際上是一個“完整的” Web瀏覽器。 無論如何,這就是代碼變成了什么:

from twill import commands
commands.go("http://www.thepiratebay.se/login")
commands.form("loginform", "username", "blah")
commands.form("loginform", "password", "blah")
commands.submit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM