예제 #1
0
    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
예제 #2
0
    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