def _get_captcha(self, _type="login"): response = self.get(URL.api_captcha()) r = re.findall('"show_captcha":(\w+)', response.text) if r[0] == 'false': return '' else: response = self.put( 'https://www.zhihu.com/api/v3/oauth/captcha?lang=en', headers=self.headers) show_captcha = json.loads(response.text)['img_base64'] with open('captcha.jpg', 'wb') as f: f.write(base64.b64decode(show_captcha)) # 调用系统图片预览工具 if platform.system() == 'Darwin': subprocess.call(['open', 'captcha.jpg']) elif platform.system() == 'Linux': subprocess.call(['xdg-open', 'captcha.jpg']) else: os.startfile('captcha.jpg') captcha = input("输入验证码:") data = {"input_text": captcha} response = self.post( 'https://www.zhihu.com/api/v3/oauth/captcha?lang=en', headers=self.headers, data=data) return captcha
def _get_captcha(self, _type="login"): response = self.get(URL.api_captcha()) r = re.findall('"show_captcha":(\w+)', response.text) if r[0] == 'false': return '' else: response = self.put( 'https://www.zhihu.com/api/v3/oauth/captcha?lang=en', headers=self.headers) show_captcha = json.loads(response.text)['img_base64'] with open('captcha.jpg', 'wb') as f: f.write(base64.b64decode(show_captcha)) # 调用系统图片预览工具 if platform.system() == 'Darwin': subprocess.call(['open', 'captcha.jpg']) elif platform.system() == 'Linux': subprocess.call(['xdg-open', 'captcha.jpg']) else: os.startfile('captcha.jpg') captcha = input("输入验证码:") data = {"input_text": captcha} # data = json.dumps(data) # 要进行加密 path = os.path.join(os.path.split( os.path.realpath(__file__))[0], 'encrypt.js') with open(path, "r") as f: js = execjs.compile(f.read()) print(data) # data = js.call('Q', urlencode(data)) response = self.post('https://www.zhihu.com/api/v3/oauth/captcha?lang=en', headers=self.headers, data=data) print("看这里 输入验证码返回值") print(response.json()) return captcha