,,python实现的登录和操作开心网脚本分享

,,python实现的登录和操作开心网脚本分享

这篇文章主要介绍了大蟒实现的登录和操作开心网脚本分享,可以登录开心网,登录后发送信息等功能,需要的朋友可以参考下

社交网站(社交网站的缩写)什么的我是一直无爱的,这次蛋疼写了个登录开心网(开心001)并向所有好友发送站内消息的脚本。

开心网在登录的时候做了一些处理,并不传原始密码,从射流研究…分析到的结果是:登录时会生成一个随机的钥匙,然后用这个键和原始密码进行xxtea加密,把加密后的结果再进行sha1加密。之后邮政这个键以及加密后的密码进行登录验证。

以下是很简陋的脚本内容:

#编码:utf-8

'''

开心网操作脚本

作者:piglei2007@gmail.com

版本:1.0

'''

进口关于

导入urllib

导入urllib2

随机导入

导入哈希里布

导入binascii

导入库奇利布

导入简单json

从xxtea导入加密

log in _ URL=' http://www。辛凯001。com/log in/log in _ API。' PHP '

log in _ KEY _ URL=' http://www。辛凯001。' com/'

朋友列表URL=' http://www。辛凯001。com/界面/建议好友。' PHP '

MESSAGE _ SEND _ URL=' http://。辛凯001。com/msg/post。' PHP '

log in _ KEY _ RE=RE。编译(r ' new \ sen登录\(').*?)'')

类登录错误(异常):

'''

登录失败抛出异常

'''

类开心001用户用户(对象):

'''

操作开心001,现有方法:

获取登录密钥-获得用户访问登录页面时分配的加密键

get_rpassword -获得经过xxtea以及sha1加密后的密码

登录-登录

获取朋友列表-获得所有好友,返回字典格式

向所有人发送消息-给所有好友发消息

'''

def __init__(自己,用户名,密码):

self.username=用户名

自我密码=密码

self.cj=cookielib .CookieJar()

opener=URL lib 2。build _ opener(URL lib 2 .HTTPCookieProcessor(self.cj))

opener.addheaders=[

('用户代理,‘Mozilla/5.0(X11;u;FreeBSD i386en-US;rv:1.9.1)壁虎/20090704火狐/3.5'),

('接受',' */* '),

('主机,《www.kaixin001.com》)

]

urllib2.install_opener(开启器)

def获取登录密钥(自身):

'''

获得登录时候的加密键

'''

_ temp=URL lib 2。urlopen(登录密钥URL).阅读()

key=LOGIN_KEY_RE.search(_temp).组(1)

回车键

定义登录(自己):

'''

登录

'''

login_key=self.get_login_key()

r密码=自己。get _ r密码(self。密码、登录密钥)

login_params={

“电子邮件”:self.username

'加密:登录密钥,

' rpasswd': rpassword,

url': '/home/',

版本':' 1 '

}

req=urllib2 .Request(LOGIN_URL,urllib.urlencode(login_params),{

referer ':' http://www .辛凯001。' com/'

})

result=urllib2.urlopen(req).阅读()

# 登录失败

如果结果中出现"错误":

引发LoginError('登录失败,请检查用户名或密码)

'打印'用户%s登录成功!%自我。用户名

返回"确定"

def get_friends_list(self):

'''

获得所有好友列表

'''

get_friends_params={

' t': str(random.random()),

键入':'全部,

}

结果=URL库2。urlopen(FRIEND _ LIST _ URL,urllib。urlencode(get _ friends _ params)).阅读()

friends=simplejson.loads(结果)

'打印'你一共有%s位好友% (len(朋友)- 1)

回报朋友

def send_messages_to_all(self,message=' '):

'''

给所有好友发消息

'''

friends=self.get_friends_list()

send_params={

附件_取消":",

附件_转发":",

attachment_random ':' ',

代码":",

'内容:消息,

forward_thread ":",

rcode ":",

服务':' 0 ',

texttype': 'html ',

uid ':',' .join([str(f[' uid '])for f in friends])

}

结果=URL库2。urlopen(MESSAGE _ SEND _ URL,urllib.urlencode(send_params))

打印结果。geturl()

'打印'消息发送成功'

返回"确定"

def get_rpassword(self,password,key):

'''

获得加密后的密码

'''

比纳斯CII。b2a _ hex(加密(密码,密钥))

r _ password=hashlib。sha1(xxtea _ pw).hexdigest()

返回r _密码

if __name__=='__main__ ':

kxu=Kaixin001User(

用户名='您的用户名,

密码='您的密码'

)

kxu.login()

kxu.send_messages_to_all('此消息由计算机编程语言发送。')

这是脚本中需要用到的xxtea算法的大蟒实现(xxtea.py):

导入结构

_DELTA=0x9E3779B9

def _long2str(v,w):

n=(len(v) - 1) 2

如果女:

m=v[-1]

如果(m n - 3)或(男名):返回''

n=m

s=struct.pack('%iL' % len(v),*v)

如果w否则返回s[0:n]

def _str2long(s,w):

n=透镜

m=(4 - (n 3) 3) n

s=s.ljust(m,' \0 ')

v=list(struct.unpack('%iL' % (m 2),s))

if w: v.append(n)

返回v

定义加密(字符串,密钥):

如果str==“”:返回潜艇用热中子反应堆(submarine thermal reactor的缩写)

v=_str2long(str,True)

k=_str2long(key.ljust(16,' \0 '),False)

n=len(v) - 1

z=v[n]

y=v[0]

总和=0

q=6 52//(北^ 1)

而q 0:

总和=(总和增量)0xffffffff

e=总和2 3

对于xrange(n)中的p:

y=v[p 1]

v[p]=(v[p]((z ^ 5 ^ y ^ 2)(y ^ 3 ^ z ^ 4)^(总和^ y)(k[p ^ 3 ^ e]^ z)))0x ffffffff

z=v[p]

y=v[0]

v[n]=(v[n]((z ^ 5 ^ y ^ 2)(y ^ 3 ^ z ^ 4)^(总和^ y)(k[n ^ 3 ^ e]^ z)))0x ffffffff

z=v[n]

q -=1

return _long2str(v,False)

定义解密(字符串,密钥):

如果str==“”:返回潜艇用热中子反应堆(submarine thermal reactor的缩写)

v=_str2long(str,False)

k=_str2long(key.ljust(16,' \0 '),False)

n=len(v) - 1

z=v[n]

y=v[0]

q=6 52//(北^ 1)

sum=(q * _DELTA)0xffffffff

而(求和!=0):

e=总和2 3

对于xrange(n,0,-1)中的p:

z=v[p - 1]

v[p]=(v[p]-((z ^ 5 ^ y ^ 2)(y ^ 3 ^ z ^ 4)^(总和^ y)(k[p ^ 3 ^ e]^ z)))0x ffffffff

y=v[p]

z=v[n]

v[0]=(v[0]-((z ^ 5 ^ y ^ 2)(y ^ 3 ^ z ^ 4)^(和^ y)(k[0 ^ 3 ^ e]^ z)))0x ffffffff

y=v[0]

总和=(总和-_增量)0xffffffff

return _long2str(v,True)

if __name__=='__main__ ':

打印解密(加密('你好XXTEA!”、' 16字节字符串')、' 16字节字符串)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: