国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜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, "

主站蜘蛛池模板:
日韩欧美在线第一页
|
亚洲清纯自偷自拍另类专区
|
国产va在线视频观看
|
精品欧美一区二区三区在线
|
国产91原创
|
免费a黄色
|
精品国产一区二区三区19
|
98成人网
|
久久婷婷久久一区二区三区
|
国产免费看视频
|
91欧美激情一区二区三区成人
|
另类在线|
亚洲一区中文字幕在线观看
|
亚洲一区 中文字幕 久久
|
五月婷婷中文字幕
|
日韩精品a在线视频
|
欧美最新一区二区三区四区
|
欧美第一页在线
|
91福利一区二区
|
欧美日韩国产精品综合
|
久久国产精品视频
|
国产91久久精品一区二区
|
欧美影欧美影院免费观看视频
|
日韩欧美爱爱
|
欧美日韩精品一区二区在线播放
|
97伊人网|
一边摸一边爽一边叫床视频
|
国产一区二区在线视频
|
成人在线一区二区
|
在线h片
|
全部费免一级毛片不收费
|
欧美国产精品va在线观看
|
色综合色狠狠天天综合色
|
91久久精品国产亚洲
|
91啪国自产在线高清观看
|
欧美1区二区三区公司
|
亚洲欧洲第一页
|
国产日韩欧美第一页
|
午夜高清在线观看免费完整版
|
91精品欧美一区二区三区
|
另类国产精品一区二区
|