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
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:
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
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
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
Perfecto
Bueno hoy aquí en el
siguiente análisis no puede encontrar una manera para que todos originales
ah ja ja ja