2013-05-14 86 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