códigos de verificación basadas método deslizador grieta grieta de selenio (1) --------- violencia

La primera experiencia fue Cuigao, ah, ja, ja, ja,
no hablar mucho que ver en esta diapositiva que descifrar el código de la página web

https://www.cods.org.cn/

Acabamos de buscar en el sitio en un código de campo se abrirá un control deslizante
Aquí Insertar imagen Descripción
un vistazo a este código no es el que yo froto mi corazón no ha habido
ningún pánico
luego lentamente analizamos el código:
En primer vistazo a f12 abierto el código de verificación se volvió URL solicitada o ser devuelto por el backend
localizamos la posición del código de verificación deslizador verá estos dos códigos:

Aquí Insertar imagen Descripción
De hecho, el código de la imagen original y el mapa se encuentran en el interior de la brecha, pero no podemos ver
que debemos ser la forma de ver Nan
sólo tenemos que añadir un fragmento de código en su css, donde
Aquí Insertar imagen Descripción
nos sorprendió encontrar la imagen CAPTCHA de cómo ha ido
acabamos de agregar el estilo = "display: none" no puede ver que hemos añadido en el estilo original = "display: block" ¿Qué pasa Nang
justo debajo de manera que
Aquí Insertar imagen Descripción
podemos cambiar las propiedades CSS y luego usar el selenio pantalla y original forma de mapa vacíos se conservan
nosotros en la celebración de un contraste de píxeles estas dos cifras no mapa para encontrar huecos todavía?
Del código completo es el siguiente:

Js parámetros de inyección css y pantalla Modificar

ele = driver.find_elements_by_tag_name('canvas')
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_slice geetest_absolute")[0].style.display="none"')  
            ##得到有缺口的图片
        ele[0].screenshot('qk.png')  
        	##缺口图片
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].style.display="none"')  
            ##得到有缺口的图片
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_fullbg geetest_fade geetest_absolute")[0].style.display="block"')  
            ##得到完整有的图片
        ele[2].screenshot('wz.png')  
        ##完整图片

####得到图片后要把参数变回去
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_slice geetest_absolute")[0].style.display="block"')  
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].style.display="block"') 
        driver.execute_script(
            'document.getElementsByClassName("geetest_canvas_fullbg geetest_fade geetest_absolute")[0].style.display="none"') 
        time.sleep(1)

A continuación se compara el píxel

def one():
    img1 = Image.open("wz.png")  
    img2 = Image.open("qk.png")
    left = 60
    for i in range(left, img1.size[0]):
        for j in range(img1.size[1]):
            if not is_px_equal(img1, img2, i, j):
                left = i
                return left
    return left


def is_px_equal(img1, img2, x, y):
    """
    判断两个像素是否相同
    :param img1: 图片1
    :param img2:图片2
    :param x:位置1
    :param y:位置2
    :return:像素是否相同
    """
    pix1 = img1.load()[x, y]
    pix2 = img2.load()[x, y]
    threshold = 60
    
    if abs(pix1[0] - pix2[0]) < threshold and abs(pix1[1] - pix2[1]) < threshold and abs(pix1[2] - pix2[2]) < threshold:
        return True
    else:
        return False

Y entonces volvemos a la izquierda que necesitamos la distancia de deslizamiento (puede afinar este URL en la prueba de mi amigo es el más estable 0.79)

Necesitamos usar la biblioteca

import numpy as np
import cv2
from PIL import Image

ver resultados
Aquí Insertar imagen Descripción

Perfecto
Bueno hoy aquí en el
siguiente análisis no puede encontrar una manera para que todos originales
ah ja ja ja

Publicado seis artículos originales · ganado elogios 32 · vistas 1532

Supongo que te gusta

Origin blog.csdn.net/qq_41927995/article/details/100130516
Recomendado
Clasificación