<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    張慧的博客

    張慧的博客

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks
    本文主要用python實(shí)現(xiàn)了對(duì)網(wǎng)站的模擬登錄。通過(guò)自己構(gòu)造post數(shù)據(jù)來(lái)用Python實(shí)現(xiàn)登錄過(guò)程。

    當(dāng)你要模擬登錄一個(gè)網(wǎng)站時(shí),首先要搞清楚網(wǎng)站的登錄處理細(xì)節(jié)(發(fā)了什么樣的數(shù)據(jù),給誰(shuí)發(fā)等...)。我是通過(guò)HTTPfox來(lái)抓取http數(shù)據(jù)包來(lái)分析該網(wǎng)站的登錄流程。同時(shí),我們還要分析抓到的post包的數(shù)據(jù)結(jié)構(gòu)和header,要根據(jù)提交的數(shù)據(jù)結(jié)構(gòu)和heander來(lái)構(gòu)造自己的post數(shù)據(jù)和header。

    分析結(jié)束后,我們要構(gòu)造自己的HTTP數(shù)據(jù)包,并發(fā)送給指定url。我們通過(guò)urllib2等幾個(gè)模塊提供的API來(lái)實(shí)現(xiàn)request請(qǐng)求的發(fā)送和相應(yīng)的接收。
    大部分網(wǎng)站登錄時(shí)需要攜帶cookie,所以我們還必須設(shè)置cookie處理器來(lái)保證cookie。

    具體代碼和講解如下

    1. #!/usr/bin/python  
    2.   
    3. import HTMLParser  
    4. import urlparse  
    5. import urllib  
    6. import urllib2  
    7. import cookielib  
    8. import string  
    9. import re  
    10.   
    11. #登錄的主頁(yè)面  
    12. hosturl = '******' //自己填寫(xiě)  
    13. #post數(shù)據(jù)接收和處理的頁(yè)面(我們要向這個(gè)頁(yè)面發(fā)送我們構(gòu)造的Post數(shù)據(jù))  
    14. posturl = '******' //從數(shù)據(jù)包中分析出,處理post請(qǐng)求的url  
    15.   
    16. #設(shè)置一個(gè)cookie處理器,它負(fù)責(zé)從服務(wù)器下載cookie到本地,并且在發(fā)送請(qǐng)求時(shí)帶上本地的cookie  
    17. cj = cookielib.LWPCookieJar()  
    18. cookie_support = urllib2.HTTPCookieProcessor(cj)  
    19. opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)  
    20. urllib2.install_opener(opener)  
    21.   
    22. #打開(kāi)登錄主頁(yè)面(他的目的是從頁(yè)面下載cookie,這樣我們?cè)谠偎蚿ost數(shù)據(jù)時(shí)就有cookie了,否則發(fā)送不成功)  
    23. h = urllib2.urlopen(hosturl)  
    24.   
    25. #構(gòu)造header,一般header至少要包含一下兩項(xiàng)。這兩項(xiàng)是從抓到的包里分析得出的。  
    26. headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',  
    27.            'Referer' : '******'}  
    28. #構(gòu)造Post數(shù)據(jù),他也是從抓大的包里分析得出的。  
    29. postData = {'op' : 'dmlogin',  
    30.             'f' : 'st',  
    31.             'user' : '******', //你的用戶(hù)名  
    32.             'pass' : '******', //你的密碼,密碼可能是明文傳輸也可能是密文,如果是密文需要調(diào)用相應(yīng)的加密算法加密  
    33.             'rmbr' : 'true',   //特有數(shù)據(jù),不同網(wǎng)站可能不同  
    34.             'tmp' : '0.7306424454308195'  //特有數(shù)據(jù),不同網(wǎng)站可能不同  
    35.   
    36.             }  
    37.   
    38. #需要給Post數(shù)據(jù)編碼  
    39. postData = urllib.urlencode(postData)  
    40.   
    41. #通過(guò)urllib2提供的request方法來(lái)向指定Url發(fā)送我們構(gòu)造的數(shù)據(jù),并完成登錄過(guò)程  
    42. request = urllib2.Request(posturl, postData, headers)  
    43. print request  
    44. response = urllib2.urlopen(request)  
    45. text = response.read()  
    46. print text  

    posted on 2012-08-01 21:42 張慧 閱讀(61090) 評(píng)論(11)  編輯  收藏

    Feedback

    # re: python實(shí)現(xiàn)模擬登錄[未登錄](méi) 2013-09-17 15:18 edison
    很好  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2013-10-27 15:15
    你好,請(qǐng)問(wèn)下,postdata和headers提交時(shí)應(yīng)該怎么判斷提交那些信息啊?不同網(wǎng)站除了用戶(hù)名和密碼外還有其他信息,如何判斷提交的信息能實(shí)現(xiàn)模擬登陸呢?  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-01-15 23:30 保永志
    進(jìn)入  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-04-12 15:13 sunshinelyc
    你好,我想問(wèn)一下,你的postData里面:
    'op' : 'dmlogin',
    'f' : 'st',
    'user' : '******', //你的用戶(hù)名
    'pass' : '******', //你的密碼,密碼可能是明文傳輸也可能是密文,如果是密文需要調(diào)用相應(yīng)的加密算法加密
    'rmbr' : 'true', //特有數(shù)據(jù),不同網(wǎng)站可能不同
    'tmp' : '0.7306424454308195' //特有數(shù)據(jù),不同網(wǎng)站可能不同
    去哪里來(lái)的呢。我在httpfox里面只能找到user和password。謝謝回復(fù)  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-06-03 08:59 ontseason
    @sunshinelyc
    抓包,用chrome的開(kāi)發(fā)人員工具審查元素...network里
      回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-08-01 23:09 yu
    如果是驗(yàn)證用戶(hù)名是否重復(fù)咋個(gè)實(shí)現(xiàn)  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-10-01 11:54 jzp113
    你好,我按照你的方法進(jìn)行了模擬登錄,能登錄成功。但是我用burpsuit 抓包時(shí)發(fā)現(xiàn)沒(méi)有cookie這內(nèi)容。但是我開(kāi)啟debuglog 又在header里面發(fā)現(xiàn)了這個(gè)cookie。
    然后我又再次發(fā)送了個(gè)get請(qǐng)求,當(dāng)卻不成功  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2014-10-20 13:55 Warmer
    頁(yè)面有checkbox的話(huà),怎么模擬?  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄[未登錄](méi) 2015-05-16 09:47 1
    可以轉(zhuǎn)載么  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2015-11-17 15:35 zhangyan
    dgrhtr  回復(fù)  更多評(píng)論
      

    # re: python實(shí)現(xiàn)模擬登錄 2015-11-17 15:35 zhangyan
    fegerh  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 好大好硬好爽免费视频| 好吊妞在线新免费视频| 麻豆国产入口在线观看免费| 亚洲欧洲中文日韩久久AV乱码| 综合自拍亚洲综合图不卡区| 国产亚洲男人的天堂在线观看| 久草免费福利视频| 国产网站免费观看| 亚洲三级电影网址| 特级毛片全部免费播放a一级| 久久久久久久岛国免费播放 | 久久天天躁狠狠躁夜夜免费观看| 亚洲成av人片在线观看天堂无码| 亚洲自偷精品视频自拍| 三级片免费观看久久| 免费福利网站在线观看| 亚洲欧洲成人精品香蕉网| 朝桐光亚洲专区在线中文字幕| 免费A级毛片无码A∨ | 免费大片黄手机在线观看| 亚洲精品影院久久久久久| h在线看免费视频网站男男| 毛片免费观看网址| 亚洲欧洲精品无码AV| 羞羞网站免费观看| 成年在线观看网站免费| 亚洲第一成年男人的天堂| 四虎国产精品永免费| 国产精品美女午夜爽爽爽免费| 亚洲AV日韩精品久久久久久久| 国产综合激情在线亚洲第一页| 美女裸身网站免费看免费网站| 国产成人亚洲精品青草天美| 免费毛片毛片网址| 亚洲综合一区国产精品| 日韩电影免费在线观看中文字幕| 亚洲第一视频在线观看免费| 亚洲精品宾馆在线精品酒店| 国产成人无码精品久久久久免费| 日本高清免费aaaaa大片视频| 亚洲成年人电影网站|