Reconocimiento-uso del código de verificación del rastreador Python3 y combate real de la plataforma de codificación Super Eagle: reconozca el código de verificación en la página de inicio de sesión de Gushiwen.com

1. ¿El amor y el odio entre el código de verificación y el rastreador?

Mecanismo anti-escalada: Código de verificación Identifique los datos en la imagen del código de verificación para simular la operación de inicio de sesión.

2. La operación de identificación del código de verificación:

  1. Reconocimiento artificial a simple vista. (No recomendado)
  2. Identificación automática de terceros (recomendado) -
    Codificación Super Eagle: https://www.chaojiying.com/

El proceso de uso de la plataforma de codificación Super Eagle:
1. Registrarse:
2. Iniciar sesión:

  • Consultar si el usuario tiene puntos de interrogación restantes
    Inserte la descripción de la imagen aquí

  • Cree un software: Super Eagle Home> Centro de usuario> ID de software> Genere una ID de software> Ingrese el nombre del software> Enviar (ID de software y clave secreta)
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

  • Descargue el código de muestra: Documento de desarrollo> Haga clic aquí para descargar la muestra de Python El
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    código de muestra es el siguiente:

#!/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 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 后要加()


Simplemente agregue paréntesis () después de la última línea de impresión

Los parámetros requeridos para las últimas tres líneas:

Nombre de usuario y contraseña de Super Eagle: Registre este sitio web

ID de software: Consígalo en el centro de usuarios Ruta de la
Inserte la descripción de la imagen aquí
imagen: Preste atención a la ruta relativa y la ruta absoluta Se adjunta una imagen a.jpg en el estuche.

Tipo de código de verificación: consulte http://www.chaojiying.com/price.html en el sistema de precios

Resultado de la operación (el programa puede conocer los datos en formato json):
Inserte la descripción de la imagen aquí
Descripción de retorno:
err_no, (número) código de retorno
err_str, (cadena) Descripción en chino de la información de retorno
pic_id, (cadena) número de identificación de imagen o número de identificación de imagen
pic_str , (String) el resultado identificado
md5, (string) md5 check value, usado para verificar si este dato devuelto es verdadero y válido

En tercer lugar, real: identificación del código de la página de inicio de sesión de la red de poesía antigua .

El proceso de codificación de usar la plataforma de codificación para identificar el código de verificación:
-Descargar la imagen del código de verificación localmente
-Llamar el código de muestra proporcionado por la plataforma para el reconocimiento de datos de imagen

Inserte la descripción de la imagen aquí

import requests
from lxml import etree
from hashlib import md5

# 封装识别验证码图片的函数
def getCodeText(userName, password, appId, imgUrl):
    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 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(userName, password, appId)  # 用户中心>>软件ID 生成一个替换 96001
        im = open(imgUrl, 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
        # print(chaojiying.PostPic(im, 1902))  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()
    return chaojiying.PostPic(im, 1902)

# 将验证码图片下载到本地
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
headers = {
    
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
    }
page_text = requests.get(url=url,headers=headers).text

# 解析验证码图片img中src属性值
tree = etree.HTML(page_text)
img_url = tree.xpath('//img[@id="imgCode"]/@src')[0]
img_url = 'https://so.gushiwen.cn/' + img_url
# print(img_url)
img_data = requests.get(url=img_url,headers=headers).content
# 将验证码图片存到本地
with open('./code.jpg','wb') as fp:
    fp.write(img_data)


# 调用打码平台的示例程序进行验证码图片数据识别
result = getCodeText('你的超级鹰用户名','你的超级鹰密码', '你的超级鹰appid', '需要识别的验证码图片在本地的路径')
print(result)


Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44827418/article/details/113936112
Recomendado
Clasificación