正在加载中...

python版登录验证码自动识别

  • 编辑时间: 2020-05-20 23:29:07
  • 浏览量: 3896
  • 作者: makerroot
  • 所有标签: python
  • 文章分类: python后端
  • 评论数: 暂无评论

现在很多登录都要输入验证码,那要自动登录呢,怎么办,经过几天的实验之后发现都不理想,后来就问了一个专业爬虫的好友“吴亦凡”,他给我说联众大码很好用,我注册试了一下还真不错,后来升级成为了联众打码的开发者,哈哈,效率99.99%以上。真的不错,推荐一下,价格也比较合理。

python版代码样列
import requests
import json


class VerificationCode():
    def __init__(self, api_username, api_password, file_name, api_post_url, yzm_min, yzm_max, yzm_type, tools_token,
                 img_url=None):
        self.api_username = api_username
        self.api_password = api_password
        self.file_name = file_name
        self.api_post_url = api_post_url
        self.yzm_min = yzm_min
        self.yzm_max = yzm_max
        self.yzm_type = yzm_type
        self.tools_token = tools_token
        self.img_url = img_url
        self.headers = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
            'Accept-Encoding': 'gzip, deflate',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
            'Connection': 'keep-alive',
            'Host': 'v1-http-api.jsdama.com',
            'Upgrade-Insecure-Requests': '1'
        }
        if img_url is not None:
            self.download_vcode()

    def download_vcode(self):
        try:
            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'}
            s = requests.session()
            resp = s.get(self.img_url, headers=headers, verify=False)
            file_name = 'code.png'
            with open(file_name, 'wb') as f:
                f.write(resp.content)
        except Exception as e:
            print(e)
            pass

    def verification(self):
        files = {
            'upload': (self.file_name, open(self.file_name, 'rb'), 'image/png')
        }

        data = {
            'user_name': self.api_username,
            'user_pw': self.api_password,
            'yzm_minlen': self.yzm_min,
            'yzm_maxlen': self.yzm_max,
            'yzmtype_mark': self.yzm_type,
            'zztool_token': self.tools_token
        }
        s = requests.session()
        # 代理使用
        # r = s.post(api_post_url, headers=headers, data=data, files=files, verify=False, proxies=proxies)
        r = s.post(self.api_post_url, headers=self.headers, data=data, files=files, verify=False)
        return json.loads(r.text).get('data').get('val')


if __name__ == '__main__':
    vc = VerificationCode('用户名',
                          '密码',
                          '图片名称',
                          "http://v1-http-api.jsdama.com/api.php?mod=php&act=upload",
                          '1',
                          '8',
                          '1014(可根据情况定义,目前是六位的验证码,不同验证码识别传递的参数在这里更改)',
                          'dbedebf205192e54867162bf81617953',
                          '图片链接(有本地图片可不写,直接写上面的图片名称就行)')
    print(vc.verification(), type(vc.verification()))

识别的情况如图所示

识别结果如图所示

更多可查看官网各种验证码识别

上一篇: 魔法方法的牛逼之处

下一篇: 代理ip汇总

提交评论

评论列表

暂无评论

关于本站

1.记录生活

2.建站时间2019-04-05

3.主要技术Django2、Bootstrap...