Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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", {})