验证码相关

验证码相关

关于验证码

验证码处理:

    1. 使用浏览器里面的cookie,绕过验证.
    1. 利用神经网络图片识别模块,编写验证码识别的功能
    1. 第三方打码平台, 超级鹰, 图鉴

超级鹰

链接: 官网

使用方法

  • 登录超级鹰的官网. 注册. 注册后, 进入用户中心. 生成一个新的软件ID
  • 超级鹰的官网的开发文档. 找到Python语言Demo下载。放到pycharm里

识别效果还是不错的.

python 复制代码
#!/usr/bin/env python
# coding:utf-8

import requests
from hashlib import md5

class Chaojiying_Client(object):

    def __init__(self, username, password, soft_id):
        self.username = username
        password =  password.encode('utf8')
        self.password = md5(password).hexdigest()
        self.soft_id = soft_id
        self.base_params = {
            'user': self.username,
            'pass2': self.password,
            'softid': self.soft_id,
        }
        self.headers = {
            'Connection': 'Keep-Alive',
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
        }

    def PostPic(self, im, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
        }
        params.update(self.base_params)
        files = {'userfile': ('ccc.jpg', im)}
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)
        return r.json()

    def PostPic_base64(self, base64_str, codetype):
        """
        im: 图片字节
        codetype: 题目类型 参考 http://www.chaojiying.com/price.html
        """
        params = {
            'codetype': codetype,
            'file_base64':base64_str
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, headers=self.headers)
        return r.json()

    def ReportError(self, im_id):
        """
        im_id:报错题目的图片ID
        """
        params = {
            'id': im_id,
        }
        params.update(self.base_params)
        r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
        return r.json()


if __name__ == '__main__':
    chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001')	#用户中心>>软件ID 生成一个替换 96001
    im = open('a.jpg', 'rb').read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
    print(chaojiying.PostPic(im, 1902))												#1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()
    #print chaojiying.PostPic(base64_str, 1902)  #此处为传入 base64代码

验证码类型

官网:价格体系有验证码类型及收费

验证码类型 验证码描述 官方单价(题分)
1902 常见4~6位英文数字 10,12,15
1101 1位英文数字 10
1004 1~4位英文数字 10
1005 1~5位英文数字 12
1006 1~6位英文数字 15
1007 1~7位英文数字 17.5
1008 1~8位英文数字 20
1009 1~9位英文数字 22.5
1010 1~10位英文数字 25
1012 1~12位英文数字 30
1020 1~20位英文数字 50

验证码登录超级鹰

python 复制代码
from selenium.webdriver import Chrome
from chaojiying import Chaojiying_Client
import time


web = Chrome()
web.get("http://www.chaojiying.com/user/login/")
# 获取验证码图片
code_img = web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/div/img')
png_code_img = code_img.screenshot_as_png  # 截图(验证码)

chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '软件id')
result = chaojiying.PostPic(png_code_img, 1902)

web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[1]/input').send_keys('超级鹰用户名')
web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[2]/input').send_keys('超级鹰用户名的密码')
web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[3]/input').send_keys(result['pic_str'])
time.sleep(8)
web.find_element_by_xpath('/html/body/div[3]/div/div[3]/div[1]/form/p[4]/input').click()

图鉴

链接: 官网

typeid 默认 3 数英混合

参数 说明
1 纯数字
1001 纯数字2
2 纯英文
1002 纯英文2
3 数英混合
1003 数英混合2
4 闪动GIF
7 无感学习(独家)
66 问答题
11 计算题
1005 快速计算题
5 快速计算题2
16 汉字
32 通用文字识别(证件、单据)
29 旋转类型
19 点选1个坐标
20 点选3个坐标
21 点选3 ~ 5个坐标
22 点选5 ~ 8个坐标
27 点选1 ~ 4个坐标
48 轨迹类型
18 缺口识别(需要2张图 一张目标图一张缺口图)
33 单缺口识别(返回X轴坐标 只需要1张图)
53 拼图识别
官方示例:
python 复制代码
import base64
import json
import requests

def base64_api(uname, pwd, img, typeid):
    with open(img, 'rb') as f:
    	# 图片以字节形式读出,用b64encode转成字符串,以json传递
        base64_data = base64.b64encode(f.read())
        b64 = base64_data.decode()
    data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}
    # 将Json字符串解码成python对象
    result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
    if result['success']:
        return result["data"]["result"]
    else:
        return result["message"]
    return ""


if __name__ == "__main__":
    img_path = "换成你自己的图片.jpg"
    result = base64_api(uname='账号', pwd='密码', img=img_path, typeid=3)
    print(result)

登录图鉴

python 复制代码
def base64_api(uname, pwd, b64_img, typeid):
    data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64_img}
    result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
    if result['success']:
        return result["data"]["result"]
    else:
        return result["message"]


def login():
    session = requests.session()
    # 抓包 session获得cookie
    url = "http://www.ttshitu.com/login.html?spm=null"
    resp = session.get(url)
    tree = etree.HTML(resp.text)

    # 获取验证码
    # captchaImg
    data_href = tree.xpath("//img[@id='captchaImg']/@data-href")[0]

    resp = session.get(data_href)

    js = resp.json()
    # 验证码
    result = base64_api("账号","密码", js['img'], '1003')

    data = {
        "captcha": result,
        "developerFlag": False,
        "imgId": js['imgId'],
        "needCheck": True,
        "password": "密码",
        "userName": "用户名",
    }

    headers={
        'Content-Type': 'application/json; charset=UTF-8',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
    }
    print(data)
    login_url = "http://admin.ttshitu.com/common/api/login/user"
    # data转成Json字符串
    resp = session.post(login_url, data=json.dumps(data), headers=headers)
    print(resp.text)


if __name__ == '__main__':
    login()
相关推荐
zhousenshan22 分钟前
Python爬虫常用框架
开发语言·爬虫·python
IMER SIMPLE43 分钟前
人工智能-python-深度学习-经典神经网络AlexNet
人工智能·python·深度学习
CodeCraft Studio1 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
专注API从业者2 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋2 小时前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落2 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_0013 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL3 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
我没想到原来他们都是一堆坏人4 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
总有刁民想爱朕ha5 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘