def do_click_verify(self): start_time = get_timestamp() img_url = self.urls["resources_host"] + self._geetest_params["pic"] self.logger.info("challenge: {0}, image url:{1}".format( self.challenge, img_url)) click_img = self.fetch(url=img_url, get_json=False, get_bytes=True) point_list = self._get_coordinate(vtype="click", image=click_img) a = self.__get_a_param(point_list=point_list) trace_list = self._generate_trace(vtype="click") P0o = hb_click_trace_encrypt(ctx=self.__click_ctx, trace_list=trace_list) info = { "lang": "zh-cn", "tt": m5_encrypt(ctx=self.__fullpage_ctx, message=P0o, arr=self._geetest_params.get("c"), mstr=self._geetest_params.get("s")), "pic": self._geetest_params.get("pic"), "a": a, "ep": self.get_ep_param(vtype="click", start_time=start_time), } passtime = get_timestamp() - start_time info.update({ "passtime": passtime, "rp": get_md5("".join([self.gt, self.challenge[:32], str(passtime)])) }) aes_key = generate_aes_key() encrypt_key_msg = rsa_encrypt(ctx=self.__fullpage_ctx, message=aes_key) encrypt_msg = final_encrypt(ctx=self.__fullpage_ctx, message=info, aes_key=aes_key) ret_info = self.fetch( self.urls["verify"], extra_params={"w": encrypt_msg + encrypt_key_msg}) if not self.debug: trace_info = { "fid": self.challenge, "trace_type": "click", "image": base64_encode(click_img), "point_list": point_list, "params": self._generate_trace_params.get("click", {}), "trace_list": trace_list, "result": ret_info.get("result") } TraceInfo(**trace_info).save() return ret_info
def do_click_verify(self): start_time = get_timestamp() img_url = self.urls["resources_host"] + self._geetest_params["pic"] print(img_url) click_img = self.fetch(url=img_url, get_json=False, get_bytes=True) point_list = self._get_coordinate(vtype="click", image_info={ "type": "click", "image": click_img }) a = self.__get_a_param(point_list=point_list) trace_list = self._generate_trace(vtype="click") P0o = hb_click_trace_encrypt(ctx=self.__click_ctx, trace_list=trace_list) info = { "lang": "zh-cn", "tt": m5_encrypt(ctx=self.__ctx, message=P0o, arr=self._geetest_params.get("c"), mstr=self._geetest_params.get("s")), "pic": self._geetest_params.get("pic"), "a": a, "ep": self.get_ep_param(vtype="click"), } end_time = get_timestamp() passtime = end_time - start_time info.update({ "passtime": passtime, "rp": get_md5("".join([self.gt, self.challenge[:32], str(passtime)])) }) aes_key = generate_aes_key() encrypt_key_msg = rsa_encrypt(ctx=self.__ctx, message=aes_key) encrypt_msg = get_Q0o(ctx=self.__ctx, message=info, aes_key=aes_key) ret_info = self.fetch( self.urls["verify"], extra_params={"w": encrypt_msg + encrypt_key_msg}) return ret_info
def do_slide_verify(self): start_time = get_timestamp() trace_list = self._generate_trace(vtype="slide") P0o = hb_slide_trace_encrypt(ctx=self.__slide_ctx, trace_list=trace_list) J72 = "64" # last point x info = { "lang": "zh-cn", "aa": m5_encrypt(ctx=self.__fullpage_ctx, message=P0o, arr=self._geetest_params.get("c"), mstr=self._geetest_params.get("s")), "imgload": random.randint(90, 150), "userresponse": j5_encrypt(ctx=self.__slide_ctx, vint=int(J72), vstr=self.challenge), "ep": self.get_ep_param(vtype="slide"), } end_time = get_timestamp() passtime = end_time - start_time info.update({ "passtime": passtime, "rp": get_md5("".join([self.gt, self.challenge[:32], str(passtime)])) }) aes_key = generate_aes_key() encrypt_key_msg = rsa_encrypt(ctx=self.__fullpage_ctx, message=aes_key) encrypt_msg = final_encrypt(ctx=self.__fullpage_ctx, message=info, aes_key=aes_key) ret_info = self.fetch( self.urls["verify"], extra_params={"w": encrypt_msg + encrypt_key_msg}) return ret_info
def get_geetest_params(self): self.__aes_key = generate_aes_key() encrypt_key_msg = rsa_encrypt(ctx=self.__ctx, message=self.__aes_key) info = { "gt": self.gt, "challenge": self.challenge, "offline": self.offline, "product": "bind", "width": "300px", "protocol": "http://", "ww": True, "cc": 8, "i": self._get_i_param() } info.update(self._type_info) encrypt_msg = get_Q0o(ctx=self.__ctx, message=info, aes_key=self.__aes_key) w = encrypt_msg + encrypt_key_msg params_info = self.fetch(self.urls["get_param"], extra_params={"w": w}) return params_info.get("data", {})