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"
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