0

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

我的代码目前是:

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电子邮件标签表单中获取了 URL。

这是来自 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>
4

1 回答 1

1

您选择了一个有趣的选择开始:) 听起来您的目的仅仅是弄清楚您需要为给定表单提交哪些元素(而不是“我如何登录到 Gmail?”,这将使用完全不同的过程)。简短(并且公认没有受过教育)的答案是“真正的”检查是在服务器端完成的,因此不需要在客户端有指示(尽管HTML5 似乎提供了一种方法)。因此,您不能仅通过查看表格就确定需要哪些内容。

至于您的示例,不久前我以这种方式登录 Gmail,我记得需要使用表单中提供的GALXanddsh值(两个内部 Gmail 变量)。所以你的论点需要是:

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

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

于 2012-08-14T22:40:20.437 回答