能不能采用飞信号登陆。。。
GoogleCodeExporter opened this issue · comments
现在只能用手机号登陆,但是我不是移动用户只是用email注册
的飞信号。比如MapleFetion是可以的,不知道可不可以修改一下
。。。。
Original issue reported on code.google.com by magicly...@gmail.com
on 2 Dec 2010 at 4:17
这样修改一下就可以了:
找到PyFetion.py的最后一个函数:
def __get_uri(self):
url = self.__sipc_url+"?mobileno="+self.mobile_no+"&domains=fetion.com.cn%3bm161.com.cn%3bwww.ikuwa.cn"+"&v4digest-type=1&v4digest="+sha1("fetion.com.cn:"+self.passwd).hexdigest()
改为:
def __get_uri(self):
if len(self.mobile_no) == 11:
url = self.__sipc_url+"?mobileno="+self.mobile_no+"&domains=fetion.com.cn%3bm161.com.cn%3bwww.ikuwa.cn"+"&v4digest-type=1&v4digest="+sha1("fetion.com.cn:"+self.passwd).hexdigest()
else:
url = self.__sipc_url+"?sid="+self.mobile_no+"&domains=fetion.com.cn%3bm161.com.cn%3bwww.ikuwa.cn"+"&v4digest-type=1&v4digest="+sha1("fetion.com.cn:"+self.passwd).hexdigest()
就是判断登录号码是否为11位的手机号码,如果不是就是飞信
号。
另外后几行的:
uri = re.search('uri="(.+?)" mobile-no',body).group(1)
后面加上:
if len(self.mobile_no) != 11:
mobileno = re.search('mobile-no="(.*)" user-status',body).group(1)
再后几行的:
self.__uri = uri
后面加上:
if len(self.mobile_no) != 11:
self.mobile_no = mobileno
就是如果输入(或命令行)的号码参数不是11位的手机号码,
就要获取手机号并对self.mobile_no重新赋值,当然如果是邮箱注
册的飞信号,这个值为空,我试过邮箱注册的号也可以登录��
�修改后的__get_uri函数为:
def __get_uri(self):
if len(self.mobile_no) == 11:
url = self.__sipc_url+"?mobileno="+self.mobile_no+"&domains=fetion.com.cn%3bm161.com.cn%3bwww.ikuwa.cn"+"&v4digest-type=1&v4digest="+sha1("fetion.com.cn:"+self.passwd).hexdigest()
else:
url = self.__sipc_url+"?sid="+self.mobile_no+"&domains=fetion.com.cn%3bm161.com.cn%3bwww.ikuwa.cn"+"&v4digest-type=1&v4digest="+sha1("fetion.com.cn:"+self.passwd).hexdigest()
while True:
try:
ret = http_send(url,login=True)
except PyFetionPiccError,e:
algorithm = re.findall('algorithm="(.+?)"',e[1])
if algorithm:
algorithm = "picc-PasswordErrorMax"
get_pic(algorithm,self)
url = url+"&pid="+self.verify_info[2]+"&pic="+self.verify_info[1]+"&algorithm="+algorithm
continue
break
header = str(ret.info())
body = ret.read()
try:
ssic = re.search("ssic=(.+?);",header).group(1)
sid = re.search("sip:(.+?)@",body).group(1)
uri = re.search('uri="(.+?)" mobile-no',body).group(1)
if len(self.mobile_no) != 11:
mobileno = re.search('mobile-no="(.*)" user-status',body).group(1)
user_id = re.search('user-id="(.+?)"',body).group(1)
status = re.search('user-status="(\d+)"',body).group(1)
except:
return False
domain = "fetion.com.cn"
log(locals())
self.sid = sid
self.__uri = uri
if len(self.mobile_no) != 11:
self.mobile_no = mobileno
self._ssic = ssic
self._user_id = user_id
self._domain = domain
return True
Original comment by liu...@gmail.com
on 19 Dec 2010 at 7:06