z0x010 / pytool

Automatically exported from code.google.com/p/pytool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

能不能采用飞信号登陆。。。

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