• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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實現(xiàn)的登錄和操作開心網(wǎng)腳本分享

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

    python實現(xiàn)的登錄和操作開心網(wǎng)腳本分享

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

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

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

    以下是很簡陋的腳本內(nèi)容:

    #coding: utf-8
    """
    開心網(wǎng)操作腳本
    
    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,現(xiàn)有方法:
     
     get_login_key - 獲得用戶訪問登錄頁面時分配的加密key
     
     get_rpassword - 獲得經(jīng)過xxtea以及sha1加密后的密碼
     
     login - 登錄
     
     get_friends_list - 獲得所有好友,返回字典格式
     
     send_messages_to_all - 給所有好友發(fā)消息
     """
     
     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=''):
     """
     給所有好友發(fā)消息
     """
     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 "消息發(fā)送成功"
     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實現(xiàn)(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, "
    
    主站蜘蛛池模板:
    国产在线观看高清精品|
    亚洲欧美精品午睡沙发|
    青草青草久热精品视频在线观看|
    精品国产粉嫩内射白浆内射双马尾|
    国产乱码伦精品一区二区三区麻豆
    |
    亚欧乱色国产精品免费视频|
    老司机99精品99|
    久久国产精品99精品国产|
    欧美亚洲另类精品第一页
    |
    91久久精品国产成人久久|
    精品国精品无码自拍自在线|
    亚洲国产精品日韩专区AV|
    国产三级精品三级在线观看专1|
    久久免费国产精品一区二区|
    国产精品亚洲A∨天堂不卡|
    最新精品露脸国产在线
    |
    无码日韩人妻精品久久蜜桃
    |
    97国产精品视频|
    日韩国产精品无码一区二区三区|
    亚洲高清国产拍精品青青草原|
    精品一区二区三区免费观看|
    国产高清在线精品一区小说|
    欧美大片日韩精品|
    国产日韩精品在线|
    国产精品视频久久久|
    国产精品成人观看视频国产|
    国产成人精品视频播放|
    99热精品在线|
    久久96国产精品久久久|
    国产精品你懂的|
    国产精品爽黄69天堂a|
    国产精品久久久久久久久鸭|
    99热这里只有精品在线|
    国产精品久久亚洲不卡动漫|
    久久91精品国产91久久户|
    国产在线拍揄自揄视精品不卡|
    国产精品一二三区|
    91精品国产综合久久香蕉
    |
    网友偷拍日韩精品|
    欧美午夜精品一区二区三区91|
    午夜精品久久久久久久无码|