基本逻辑:
logging -----------------------》get_image(下载带缺口的图片和不带缺口的图片) ----------------------》 recover_image
|
|
simulate_drag《---------------get_track 《-------------get_diff_x(比对x轴RGB差值获取缺口x坐标)
话不多说,直接贴代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
author NJ
破解 哔哩哔哩 滑块验证码
"""
import os
import random
import urllib.request
import requests
import logging
import time
import re
from selenium import webdriver
from PIL import Image
from io import BytesIO
from selenium.webdriver.common.action_chains import ActionChains
class Bilibili(object):
js = """var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
if (keys) {
for (var i = keys.length; i--;)
document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
} """
def __init__(self):
super(Bilibili, self).__init__()
self.browser = webdriver.Chrome()
self.browser.set_page_load_timeout(20) #设定页面加载时间
self.browser.implicitly_wait(10) #隐式等待
def __del__(self):
"""析构函数"""
if self.browser is not None:
self.browser.quit()
def get_image(self,class_name):
"""
从网页中下载打乱的图片
:param class_name: 传进去的包含图片地址的classname
:return: 返回拼凑好的完整图片
"""
image_list = self.browser.find_elements_by_class_name(class_name)
if len(image_list) &#