如何使用python 3.0脚本知道要为webform填充的参数

时间:2012-08-14 22:29:42

标签: python

我会在gmail上测试这个,因为它是一个很多人拥有并将知道如何使用的简单平台。如果a)我的代码错误,b)webform所需的参数输入是什么,请赐教。

我的代码目前是:

data = {'Email':"Emailtypedhere",'Passwd':"Passwordtypedhere"} 

#note that I use 'Email' and 'Passwd' based on the name= of the username/password form fields. 
#if I should be using it based on the id= please advise. Thanks!

url = "https://accounts.google.com/ServiceLoginAuth"
data_in_string = urllib.parse.urlencode(data)
data_in_bytes = data_in_string.encode('utf-8')
urllib.request.urlopen(url,data_in_bytes)

从那以后我会假设我现在登录了gmail。那是对的吗?我从表单中的action类型获取了网址,从标签表单密码中获取了Passwd,从电子邮件标签表单中获取了Email

以下是Gmail中的代码,特别是表单。如果我缺少任何参数或我的代码有效,请告诉我。谢谢!

<form novalidate="" id="gaia_loginform" action="https://accounts.google.com/ServiceLoginAuth" method="post">
<input type="hidden" name="continue" id="continue" value="https://mail.google.com/mail/">
<input type="hidden" name="service" id="service" value="mail">
<input type="hidden" name="rm" id="rm" value="false">
<input type="hidden" name="dsh" id="dsh" value="-6956126811101026847">
<input type="hidden" name="ltmpl" id="ltmpl" value="default">
<input type="hidden" name="hl" id="hl" value="en">
<input type="hidden" name="scc" id="scc" value="1">
<input type="hidden" name="ss" id="ss" value="1">
<input type="hidden" name="GALX" value="q83s3oZvHfE">
<input type="hidden" id="pstMsg" name="pstMsg" value="1">
<input type="hidden" id="dnConn" name="dnConn" value="">
<input type="hidden" id="checkConnection" name="checkConnection" value="youtube:377:1">
<input type="hidden" id="checkedDomains" name="checkedDomains" value="youtube">
<input type="hidden" name="timeStmp" id="timeStmp" value="">
<input type="hidden" name="secTok" id="secTok" value="">
<div class="email-div">
<label for="Email"><strong class="email-label">Username</strong></label>
<input type="email" spellcheck="false" name="Email" id="Email" value="">
</div>
<div class="passwd-div">
<label for="Passwd"><strong class="passwd-label">Password</strong></label>
<input type="password" name="Passwd" id="Passwd">
</div>
<input type="submit" class="g-button g-button-submit" name="signIn" id="signIn" value="Sign in">
<label class="remember" onclick="">
<input type="checkbox" name="PersistentCookie" id="PersistentCookie" value="yes">
<strong class="remember-label">
Stay signed in
</strong>
</label>
<input type="hidden" name="rmShown" value="1">
</form>

1 个答案:

答案 0 :(得分:1)

你选择了一个有趣的选择:)听起来你的目的只是想弄清楚你需要为给定的表单提交哪些元素(而不是'我如何登录Gmail?',这将使用一个完全不同的过程)。简短(并且公认未受过教育)的答案是“真实”检查是在服务器端完成的,因此不需要在客户端进行指示(尽管HTML5 seems to provide a way)。因此,您无法肯定地通过查看表单来确定哪些内容。

至于您的示例,我一时间以这种方式登录Gmail,我记得需要使用提供的GALXdsh值(两个内部Gmail变量)形成。所以你的论点需要是:

data = {
    'Email': 'email', 
    'Passwd': 'passwrd', 
    'GALX': 'GALX_value_above', 
    'dsh': 'dsh_value_above' }

然后,您将对参数进行编码并打开URL。可能有一种更好的方法来确定所需的值,但我记得测试组合,直到我能够访问所需的那些。同样,如果您尝试登录Gmail,那么的方式,但您明确表示这只是一个示例,所以我猜不需要警告:)