做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答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, "

主站蜘蛛池模板:
顺平县|
东山县|
榕江县|
襄樊市|
全椒县|
台山市|
阆中市|
正镶白旗|
榕江县|
浦县|
平昌县|
巫溪县|
宜良县|
兴仁县|
宝鸡市|
日土县|
大邑县|
建阳市|
罗城|
满洲里市|
九台市|
岢岚县|
赫章县|
济源市|
湖口县|
河间市|
施甸县|
依安县|
手机|
高陵县|
闽清县|
天镇县|
潼关县|
上虞市|
石柱|
宜章县|
扶余县|
云南省|
化德县|
南岸区|
依安县|