Esempio n. 1
0
    def check_if_login(self):
        """
        检查是否成功登录(同时也是获取各个页面的中间必要通信环节)
        :return: True for success; False for not.
        """
        self.logger.info(u"验证是否是登录状态...")

        checkin_url = "http://iservice.10010.com/e3/static/check/checklogin?_="
        try:
            res = self.ses.post(checkin_url + Operator.get_timestamp())
        except Exception as e:
            self.logger.error(u"[1001] 无法发送获取登录状态的请求" + str(checkin_url))
            self.logger.error(str(e))
            return False, "0003"

        try:
            result = res.json().get("isLogin")
        except Exception as e:
            self.logger.error(u"[1002] check_login登录状态返回内容异常")
            self.logger.error(str(e))
            return False, "0001"

        if result is None:
            self.logger.error(u"[1002] check_login登录状态返回内容异常")
            return False, "0001"

        if result:
            self.logger.info(u"成功登录联通官网")
            return True, "0000"
        else:
            self.logger.warning(u"登录联通官网失败")
            return False, "0003"
Esempio n. 2
0
    def get_personal_info(self):
        """
        获取账号基本信息
        :return:
        """
        # 1. 获取个人基本信息
        checkin_url = "http://iservice.10010.com/e3/static/check/checklogin?_="
        try:
            res = self.ses.post(checkin_url + Operator.get_timestamp())
        except Exception as e:
            self.write_log(u"[3002] 无法发送获取登录状态的请求" + str(checkin_url))
            self.write_log(traceback.format_exc())
            return False

        try:
            res_json = res.json().get("userInfo")
        except Exception as e:
            self.write_log(u"[3003] 用户基本信息(userInfo)返回内容异常")
            self.write_log(traceback.format_exc())
            return False

        # 2. 获取余额以及最近更新时间
        try:
            self.ses.get(self.user_info)
            res2 = self.ses.post(self.user_json)
        except Exception as e:
            self.write_log(u"[3002] 无法打开账户信息页面" + str(self.user_json))
            self.write_log(traceback.format_exc())
            return False

        try:
            res2_json = res2.json().get("defBindnumInfo").get("costInfo")
        except Exception as e:
            self.write_log(u"[3003] 账户信息页面(costInfo)返回内容异常")
            self.write_log(traceback.format_exc())
            res2_json = None

        # 3. 整理结果
        open_time = res_json.get("opendate")
        if open_time is None:
            try:
                open_time = res2.json().get("defBindnumInfo").get("mydetailinfo").get("opendate")
            except Exception as e:
                self.write_log(u"[3003] 账户信息页面返回内容异常")
                self.write_log(traceback.format_exc())
                open_time = ""
            else:
                open_time = open_time.replace(u"年", "-").replace(u"月", "-").replace(u"日", "").strip()
        else:
            open_time = open_time[:4] + '-' + open_time[4:6] + '-' + open_time[6:8]

        result = dict()
        result["real_name"] = res_json.get("custName")
        result["id_card"] = res_json.get("certnum")
        result["addr"] = res_json.get("certaddr")
        result["user_source"] = "CHINA_UNICOM"
        result["level"] = res_json.get("vip_level")
        # result["state"] = -1
        result["open_time"] = open_time
        result["package_name"] = res_json.get("packageName")

        if result["level"] is None:
            try:
                res = self.ses.post("https://uac.10010.com/cust/userinfo/userInfo")
                level_json = res.json()
            except Exception as e:
                self.write_log(u"[3002] 无法获取用户VIP等级")
                result["level"] = ""
                self.write_log(traceback.format_exc())
            else:
                result["level"] = level_json.get("vipLevel")

        if result["level"] is None:
            result["level"] = ""

        if res2_json is not None:
            try:
                result["phone_remain"] = int(float(res2_json.get("balance")) * 100)
            except Exception as e:
                self.write_log(u"[3003] 获取的账户余额数值异常: " + str(res2_json.get("balance")))
                self.write_log(traceback.format_exc())
                result["phone_remain"] = None
        else:
            result["phone_remain"] = None
        result["last_modify_time"] = ""

        if result["phone_remain"] is None:
            result["phone_remain"] = ''

        # 获取归属地
        try:
            result["province"], result["city"] = location_scrape(self.phone_number)
        except Exception as e:
            self.write_log(u"[3004] 获取号码归属地的程序出现异常")
            self.write_log(traceback.format_exc())
            result["province"], result["city"] = ["", ""]

        return result