2014-01-24 294 views
0

我有這種形式,但我不知道如何創建將正確執行此操作的有效內容。通過請求登錄到網站

<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),但我沒有得到我預期的反應;即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只是默認的登錄頁面。再建議?

+0

您沒有包含'act'參數。 –

回答

0

我結束了在不同的模塊,斜紋去,做什麼,我通緝。我認爲斜紋布實際上是一個「完整的」網頁瀏覽器。無論如何,這是代碼變成的內容:

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

使用Firebug的Net選項卡來跟蹤實際發送的參數,這是我得到了什麼,當我給它一個嘗試:

act   login 
password  password 
submit  Login 
username  username 

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

更新了我的代碼,似乎仍然沒有工作! – Broseph