2015-06-12 47 views
0

我正在嘗試使用Cookie實現一個基本的Python登錄腳本。我在這裏和其他地方看過很多例子,我無法越過這個「urllib2.HTTPError:HTTP錯誤405:方法不允許」的錯誤。Python Web登錄腳本不能正常工作

該腳本已被複制並與其他十幾個人交叉檢查,我認爲這是有道理的 - 所以也許問題出在HTML或Web服務器上?如果錯誤令人尷尬地顯而易見,那麼JavaScript是我的網頁腳本的程度,所以請提前致歉。

HTML(的index.html):

<form id="loginForm" action="login.py" method="post"> 
<div class="loginDiv"> 
    <div class="inputDiv"> 
     <label for="user" id="user-label">User:</label> 
     <input id="username" type="text" name="handle" value="" 
       autocomplete="off" class="roundedInputs" style="color:White;width:160px;" />    
    </div> 
    <div class="inputDiv"> 
     <label for="pass" id="pass-label">Pass:</label> 
     <input id="password" type=password name="password" value="" 
       autocomplete="off" class="roundedInputs" 
       style="color:White;width:160px;" />    
    </div> 
</div> 
<div class="submitDiv"> 
    <input id="sumbitLogin" class="sumbitStyle" type="submit" value="&#187;&nbsp;ENTER&nbsp;&#171;" /> 
</div>  
</form> 

和Python(login.py)

import cookielib 
import urllib 
import urllib2 

username = 'myuser' 
password = 'mypassword' 


values = {'username' : username, 
      'password' : password } 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login_data = urllib.urlencode(values) 
opener.open('http://<address>:8080/index.html', login_data) 
resp = opener.open('http://<address>:8080/FTP/') 
http_headers = response.info() 
print resp.read() 

我就完全放棄,並在東西寫它瀕臨別人,所以任何幫助將非常感激。

回答

0

我會推薦請求庫。

import requests 
from requests.auth import HTTPBasicAuth 

username = 'myuser' 
password = 'mypassword' 

response = requests.get('http://<address>:8080/index.html', 
         auth=HTTPBasicAuth(username, password)) 
+0

我想我仍然必須將提供的憑證存儲在cookie中?然後在每個需要的頁面上使用HTTPBasicAuth? – Sufo

+0

查詢請求庫的文檔。您可以使用憑據分配會話,然後在會話中進行操作。 – James