2013-05-14 93 views
0

我想用requests模塊登錄到網站。登錄表單是在javascript中我認爲。我需要確定包含用戶名和密碼的表單名稱。我試圖對它進行排序我們的螢火蟲,我將鼠標懸停在該網站上的Username領域,這裏是代碼:如何識別登錄表單變量

<div id="ctl00_main_login_dvUserTxt" class="dvUsr visible"> 
<input id="ctl00_main_login_UserNameText" class="f10 b txMain tx" type="text" 
ondrop="javascript: return false;" ondrag="javascript: return false;" oncut="javascript: 
return false;" oncontextmenu="javascript: return false;" onblur="javascript: return 
false;" onpaste="javascript: return false;" oncopy="javascript: return false;" 
autocomplete="off" tabindex="1" readonly="readonly" maxlength="20" value="Uzytkownik" 
name="ctl00$main$login$UserNameText"> 

我做密碼相同,想這些的任意組合,沒有是正確的。

我也期待了頁面的源代碼,這裏是什麼,我相信是適當的功能:

<div> 
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" /> 
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
value="/wEPDwULLTE2NjY0NzYzMDhkZBd9ab2vcPcoEfqJ+ZqlPm7gs1iA" /> 
</div> 

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['aspnetForm']; 
if (!theForm) { 
    theForm = document.aspnetForm; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 

我想eventTarget可能是用戶名的形式,它是不是雖然。

我在尋找表單名稱的正確途徑或我如何才能真正識別這些表單名稱?

+0

您是否試圖模擬登錄請求,而不直接使用表單?如果是的話,那麼你可能會遇到這樣的情況:「如果Page.IsPostBack」在該頁面的底層代碼隱藏之後...... – 2013-05-14 16:50:41

+0

我只是想登錄到網站以便稍後進行修改。 – nutship 2013-05-14 16:59:04

回答

1

我會用http://www.crummy.com/software/BeautifulSoup/或類似的東西去分析數據和找到你需要的元素,然後試着自己構建一個解析器,即使它也可以工作,這樣會更容易。

或者更輕質庫一點:http://scrapy.org/

和窗體名稱是aspnetForm和用戶名和密碼字段是不是在您的文章中描述,它的數據可能更早。嘗試搜索<form和在這兩者之間</form

Basicly找到每<input你要找的是什麼之間的一切:

<form ...> 

*all <input> objects* 

</form> 

而且,你在做什麼..是比較容易的方式來檢查說: Firefox + https://addons.mozilla.org/En-us/firefox/addon/tamper-data/

這樣你可以看到實際的POST數據發送到服務器,你可以忽略幾乎所有的網絡解析,只是直接進入你的過程的POST部分。 (可能會從隱藏的輸入字段獲得一些ID,但是meeh ..你想清楚)

+0

我用Bs4解析網站,當然,但該網站需要登錄才能看到我需要的內容,所以你知道。 – nutship 2013-05-14 16:56:39

+1

不是嗎?如果您使用任何類型的POST數據分析工具,您只需嘗試登錄即可,並且您將看到從瀏覽器發送到服務器的元素,這些元素都是您需要模仿的東西(我寫過用於遊戲和黑幕網站的webbots的X^Y)。 您可以用90%的世界網站來分析POST數據,在Python中編寫'urllib.urlopen'(oneliner)腳本併成功登錄。在極少數情況下,您需要獲取一些隱藏的.NET變量,但它們幾乎都是純文本,幾乎可以在所有網站上使用刮擦工具。 – Torxed 2013-05-14 16:58:46

+0

您願意接收我的電子郵件並查看實際的網頁來源並幫助我嗎? – nutship 2013-05-14 17:04:49