<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        python實現的登錄和操作開心網腳本分享

        來源:懂視網 責編:小采 時間:2020-11-27 14:30:35
        文檔

        python實現的登錄和操作開心網腳本分享

        python實現的登錄和操作開心網腳本分享:SNS什么的我是一直無愛的,這次蛋疼寫了個登錄開心網(kaixin001)并向所有好友發送站內消息的腳本。 開心網在登錄的時候做了一些處理,并不傳原始密碼,從js分析到的結果是:登錄時會生成一個隨機的key,然后用這個key和原始密碼進行xxtea加密,把加密后的
        推薦度:
        導讀python實現的登錄和操作開心網腳本分享:SNS什么的我是一直無愛的,這次蛋疼寫了個登錄開心網(kaixin001)并向所有好友發送站內消息的腳本。 開心網在登錄的時候做了一些處理,并不傳原始密碼,從js分析到的結果是:登錄時會生成一個隨機的key,然后用這個key和原始密碼進行xxtea加密,把加密后的

        SNS什么的我是一直無愛的,這次蛋疼寫了個登錄開心網(kaixin001)并向所有好友發送站內消息的腳本。

        開心網在登錄的時候做了一些處理,并不傳原始密碼,從js分析到的結果是:登錄時會生成一個隨機的key,然后用這個key和原始密碼進行xxtea加密,把加密后的結果再進行sha1加密。之后post這個key以及加密后的密碼進行登錄驗證。

        以下是很簡陋的腳本內容:

        #coding: utf-8
        """
        開心網操作腳本
        
        Author: piglei2007@gmail.com
        Version: 1.0
        """
        import re
        import urllib
        import urllib2
        import random
        import hashlib
        import binascii
        import cookielib
        import simplejson
        
        from xxtea import encrypt
        
        LOGIN_URL = "http://www.kaixin001.com/login/login_api.php"
        LOGIN_KEY_URL = "http://www.kaixin001.com/"
        FRIEND_LIST_URL = "http://www.kaixin001.com/interface/suggestfriend.php"
        MESSAGE_SEND_URL = "http://www.kaixin001.com/msg/post.php"
        
        LOGIN_KEY_RE = re.compile(r"newsEnLogin('(.*?)'")
        
        class LoginError(Exception):
         """
         登錄失敗拋出異常
         """
        
        class Kaixin001User(object):
         """
         操作kaixin001,現有方法:
         
         get_login_key - 獲得用戶訪問登錄頁面時分配的加密key
         
         get_rpassword - 獲得經過xxtea以及sha1加密后的密碼
         
         login - 登錄
         
         get_friends_list - 獲得所有好友,返回字典格式
         
         send_messages_to_all - 給所有好友發消息
         """
         
         def __init__(self, username, password):
         self.username = username
         self.password = password
         self.cj = cookielib.CookieJar()
         opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj))
         opener.addheaders = [
         ("User-agent", "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1) Gecko/20090704 Firefox/3.5"),
         ("Accept", "*/*"),
         ("Host", "www.kaixin001.com")
         ]
         urllib2.install_opener(opener)
         
         def get_login_key(self):
         """
         獲得登錄時候的加密key
         """
         _temp = urllib2.urlopen(LOGIN_KEY_URL).read()
         key = LOGIN_KEY_RE.search(_temp).group(1)
         return key
         
         def login(self):
         """
         登錄
         """
         login_key = self.get_login_key()
         rpassword = self.get_rpassword(self.password, login_key)
         login_params = {
         'email': self.username,
         'encypt': login_key,
         'rpasswd': rpassword,
         'url': '/home/',
         'ver': '1' 
         }
         req = urllib2.Request(LOGIN_URL, urllib.urlencode(login_params), {
         "Referer": "http://www.kaixin001.com/"
         })
         result = urllib2.urlopen(req).read()
         
         # 登錄失敗
         if "errno" in result:
         raise LoginError("登錄失敗,請檢查用戶名或密碼")
         
         print "用戶 %s 登錄成功!" % self.username
         
         return 'ok'
         
         def get_friends_list(self):
         """
         獲得所有好友列表
         """
         get_friends_params = {
         't': str(random.random()),
         'type': 'all', 
         }
         result = urllib2.urlopen(FRIEND_LIST_URL, urllib.urlencode(get_friends_params)).read()
         friends = simplejson.loads(result)
         
         print "你一共有 %s 位好友" % (len(friends) - 1)
         return friends
         
         def send_messages_to_all(self, message=''):
         """
         給所有好友發消息
         """
         friends = self.get_friends_list()
         send_params = {
         'attachment_cancel': '',
         'attachment_forwarding': '',	
         'attachment_random': '',
         'code': '',
         'content': message,
         'forward_thread': '',
         'rcode': '',
         'service': '0',
         'texttype': 'html',
         'uids': ",".join([str(f['uid']) for f in friends]) 
         }
         result = urllib2.urlopen(MESSAGE_SEND_URL, urllib.urlencode(send_params))
         print result.geturl()
         print "消息發送成功"
         return 'ok'
         
         
         def get_rpassword(self, password, key):
         """
         獲得加密后的密碼
         """
         xxtea_pw = binascii.b2a_hex( encrypt(password, key) )
         r_password = hashlib.sha1(xxtea_pw).hexdigest()
         return r_password
         
        if __name__ == '__main__':
         kxu = Kaixin001User(
         username = 'your_username',
         password = 'your_password'
         )
         kxu.login()
         kxu.send_messages_to_all("This message is send by Python.")

        這是腳本中需要用到的xxtea算法的python實現(xxtea.py):

        import struct
         
        _DELTA = 0x9E3779B9 
         
        def _long2str(v, w): 
         n = (len(v) - 1) << 2 
         if w: 
         m = v[-1] 
         if (m < n - 3) or (m > n): return '' 
         n = m 
         s = struct.pack('<%iL' % len(v), *v) 
         return s[0:n] if w else s 
         
        def _str2long(s, w): 
         n = len(s) 
         m = (4 - (n & 3) & 3) + n 
         s = s.ljust(m, "
        
        主站蜘蛛池模板:
        亚洲国产模特在线播放|
        美女扒开屁股让男人桶爽免费|
        亚洲黄色在线观看视频|
        亚洲中文字幕一二三四区|
        中国一级特黄的片子免费|
        成全影视免费观看大全二|
        亚洲午夜久久久久久久久久|
        亚洲成av人在线观看网站
        |
        欧洲亚洲国产精华液|
        三年片在线观看免费|
        国产gav成人免费播放视频|
        亚洲国产成人资源在线软件|
        国产成人无码免费看视频软件|
        人人狠狠综合久久亚洲88|
        亚洲欧美日韩中文无线码|
        88av免费观看入口在线|
        久久精品国产精品亚洲人人|
        337p日本欧洲亚洲大胆人人|
        在线观看免费高清视频|
        亚洲人成色99999在线观看|
        国产精品另类激情久久久免费|
        亚洲黄色免费电影|
        一二三四免费观看在线电影|
        国产成人精品日本亚洲语音|
        亚洲人成国产精品无码|
        羞羞网站在线免费观看|
        亚洲愉拍99热成人精品热久久|
        一级毛片在线免费观看|
        亚洲国产成人精品无码区在线观看|
        99久热只有精品视频免费看|
        亚洲成年轻人电影网站www|
        a毛片在线还看免费网站|
        精品国产亚洲一区二区在线观看|
        免费观看成人久久网免费观看|
        亚洲欧洲美洲无码精品VA|
        免费看少妇高潮成人片|
        亚洲综合成人婷婷五月网址|
        性做久久久久久免费观看|
        欧洲精品码一区二区三区免费看|
        免费国产不卡午夜福在线|
        男男黄GAY片免费网站WWW|