2015-07-12 121 views
0

我只是想探索机械化。我昨天才开始了解它。机械化 - Python问题

为了清楚起见,我只是为了学习的目的而这样做,而不是打破所有意图。这仅仅是为了学习的目的。我只是选择了这个网站,因为它使用了AJAX/Javascript(这个网站特别是我不确定的),否则就有100个我可以选择的网站。所以,请帮助我了解这一点。

所以,我刚碰到这个网页 - www.snapdeal.com。如果您正确地注意到此网页,并且点击“注册”链接,在点击“帐户”按钮的下拉框中,然后点击“使用电子邮件注册”链接,您会注意到该网站可能使用Javascript或AJAX(我不确定,本网站使用哪一个)来显示“使用电子邮件注册”表单。

我只是设法“用电子邮件的形式注册”中输入一些数据,并设法得到这些结果:

然后,我只是设法追踪POST请求,该网站发送时在“使用电子邮件注册”表单中点击注册按钮。这里是所有与它相关的细节 - :

1.a.这些请求包头中:

POST /signupAjax HTTP/1.1 
Host: www.snapdeal.com 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0 
Accept: application/json, text/javascript, */*; q=0.01 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
X-Requested-With: XMLHttpRequest 
Referer: https://www.snapdeal.com/iframeLogin 
Content-Length: 128 
Cookie: u=143332124339995687; __pr.cd2=bvzs4642ht; st=utm_source%3Daffiliate%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dafts%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3D13521%7Caff_sid1%3Dnull%7Caff_sid2%3Dnull%7C; lt=utm_source%3DSEO%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dnull%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3Dnull%7Caff_sub%3Dnull%7Caff_sub2%3Dnull%7C; hpcl=616%7C53%7C288%7C257%7C175; hprv=2144302598-288%7C334547072-257%7C650370172861-175; _chartbeat2=BOCWJdBEo9iVCiO94S.1433321252304.1436675591755.0000101001010011; _SPP=SPP.1246344867578.179; _bs=cc770ead-fc2e-9f7e-32f4-87d8e2ee86b6; lang=en; s_pers=%20s_vnum%3D1438797571135%2526vn%253D4%7C1438797571135%3B%20gpv_pn%3DhomePage%253Anew%7C1436677385116%3B%20s_invisit%3Dtrue%7C1436677385119%3B; _cb_ls=1; track=BD%3Dhome; UP=0; JSESSIONID=4A6550703DD561263A67C9DD18D030FB; JSESSIONID=4A6550703DD561263A67C9DD18D030FB; s_sess=%20s_cc%3Dtrue%3B%20s_sq%3D%3B%20s_ppv%3D17%3B; bw=32.32; AWSELB=A9C537B30E076CDBCC1B9998259521F79795C353D1DF2A0435368C6E4768EB61F155147CEA5738409A47064137FA0D9CD3B8721BA4B9E0C8AE32031F93B321F69BF55EC0B0; vt=utm_source%3DDIRECT%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dnull%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3Dnull%7Caff_sub%3Dnull%7Caff_sub2%3Dnull%7C; IGFB={"user":{"name":"snapdeal","id":"560252645","count":"4.3k"}}; eid="[email protected]=success"; _chartbeat5= 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 

1.B.这些是POST参数 - :

CSRFToken=02325b364cc453ca796e76b365655b5ff020674e 
ajax=true 
j_confpassword=1234567 
j_password=1234567 
[email protected] 

1.C.这与参数 - 的位置:

https://www.snapdeal.com/signupAjax?CSRFToken=02325b364cc453ca796e76b365655b5ff020674e&ajax=true&j_confpassword=1234567&j_password=1234567&j_username=q%40ewrwer.xom 

2.我也设法跟踪该网站发送到显示登记表的请求。这里是所有与它相关的细节 - :

2. a。这是与位置:

http://www.snapdeal.com/omn/getOmnitureCode?eventType=RegisterLinkInHeader& 

2.B.这些请求包头中:

POST /omn/getOmnitureCode?eventType=RegisterLinkInHeader& HTTP/1.1 
Host: www.snapdeal.com 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0 
Accept: text/html, */*; q=0.01 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Content-Type: application/json; charset=utf-8 
X-Requested-With: XMLHttpRequest 
Referer: http://www.snapdeal.com/?logoutSuccess=success 
Cookie: u=143332124339995687; __pr.cd2=bvzs4642ht; st=utm_source%3Daffiliate%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dafts%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3D13521%7Caff_sid1%3Dnull%7Caff_sid2%3Dnull%7C; lt=utm_source%3DSEO%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dnull%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3Dnull%7Caff_sub%3Dnull%7Caff_sub2%3Dnull%7C; hpcl=616%7C53%7C288%7C257%7C175; hprv=2144302598-288%7C334547072-257%7C650370172861-175; _chartbeat2=BOCWJdBEo9iVCiO94S.1433321252304.1436676251573.0000101001010011; _SPP=SPP.1246344867578.179; _bs=cc770ead-fc2e-9f7e-32f4-87d8e2ee86b6; lang=en; s_pers=%20s_vnum%3D1438797571135%2526vn%253D4%7C1438797571135%3B%20gpv_pn%3DhomePage%253Anew%7C1436678066075%3B%20s_invisit%3Dtrue%7C1436678066079%3B; _cb_ls=1; track=BD%3Dhome; UP=0; JSESSIONID=274401F99C991AA1EC8A0A62814589DF; JSESSIONID=274401F99C991AA1EC8A0A62814589DF; s_sess=%20s_cc%3Dtrue%3B%20s_sq%3D%3B%20s_ppv%3D17%3B; bw=32.32; AWSELB=A9C537B30E076CDBCC1B9998259521F79795C353D1DF2A0435368C6E4768EB61F155147CEA5738409A47064137FA0D9CD3B8721BA4B9E0C8AE32031F93B321F69BF55EC0B0; vt=utm_source%3DDIRECT%7Cutm_content%3Dnull%7Cutm_medium%3Dnull%7Cutm_campaign%3Dnull%7Cref%3Dnull%7Cutm_term%3Dnull%7Caff_id%3Dnull%7Caff_sub%3Dnull%7Caff_sub2%3Dnull%7C; IGFB={"user":{"name":"snapdeal","id":"560252645","count":"4.3k"}}; [email protected] 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Content-Length: 0 

此外,当我们在点击“注册使用的电子邮件”中的“注册”链接弹出,我设法检查没有额外的GET或POST请求被发送网站。因此,如何访问网站上的“使用电子邮件注册”表单,使用机械化,还是需要一些额外的库(我这样说,因为我昨天刚开始使用机械化,所以我不'没有那么多的东西)?所以,我完全开放你与机械化一起使用的任何附加库!

一旦我有权访问它,我可以简单地填写并提交它,对吧?我对这部分是否正确?

请提供完整的代码和解释,因为如果你只是解释一下,那对我来说会有点困难,因为我昨天才开始使用Mechanize。所以,最好,请帮助一个完整的代码。

同样,正如我上面所说,这仅用于学习目的。请不要考虑我想要做的任何安全违规行为。我想了解如何在这些网站上应用机械设备(这就是大问题!)。

回答

0

您应该首先查看网站的源代码,因为Mechanize不支持JavaScript。

用于在Python与机械化提交形式

实施例:

import mechanize 

EMAIL = "[email protected]" 
PASS = "mypass" 

def login(email,password): 
    browser = mechanize.Browser() 
    browser.set_handle_robots(False) 
    browser.open('https://Login-SomeWebsite.com') 
    browser.select_form(nr=0) 
    browser.form["email"] = EMAIL 
    browser.form["pass"] = PASS 
    browser.submit() 
    return browser 
+0

事实上,我设法检查源代码。当我尝试使用Firebug在源代码中搜索相同的“使用电子邮件注册表单”相同的ID时,“使用电子邮件注册”一种形式(即使用javascript显示)实际上也出现在源代码中snapdeal的主页(我没有点击Accounts下拉列表中的Register链接)。因此,基本上我想要选择的表单在此阶段具有style =“display:none”,并且在I点击注册使用电子邮件链接(在问题中详细阐述),所以它主要使用JavaScript,! –

+0

所以,它基本上是一个style =“display:none”的窗体。现在,如果需要,我如何使用MECHANIZE和任何其他附加库来选择该表单? –