Python破解BiliBili滑块验证码,完美避开人机识别

self.config[k] = config[k]

def getMaxOffset(self, *args):

计算偏移平均值最大的数

av = sum(args) / len(args)

maxOffset = 0

for a in args:

offset = abs(av - a)

if offset > maxOffset:

maxOffset = offset

return maxOffset

def isGrayPx(self, r, g, b):

是否是灰度像素点,允许波动offset

return self.getMaxOffset(r, g, b) < self.config[“grayOffset”]

def isDarkStyle(self, r, g, b):

灰暗风格

return r < 128 and g < 128 and b < 128

def isOpaque(self, px):

不透明

return px[3] >= 255 * self.config[“opaque”]

def getVerticalLineOffsetX(self, bgImage):

bgImage = Image.open(“./image/bg.png”)

bgImage.im.mode = ‘RGBA’

bgBytes = bgImage.load()

x = 0

while x < bgImage.size[0]:

y = 0

点》》线,灰度线条数量

verticalLineCount = 0

while y < bgImage.size[1]:

px = bgBytes[x, y]

r = px[0]

g = px[1]

b = px[2]

alph = px[3]

print(px)

if self.isDarkStyle(r, g, b) and self.isGrayPx(r, g, b) and self.isOpaque(px):

verticalLineCount += 1

else:

verticalLineCount = 0

y += 1

continue

if verticalLineCount >= self.config[“minVerticalLineCount”]:

连续多个像素都是灰度像素,直线

print(x, y)

return x

y += 1

x += 1

pass

if name == ‘main’:

bgImage = Image.open(“./image/bg.png”)

veriImageUtil = VeriImageUtil()

veriImageUtil.updateConfig({

“grayOffset”: 20,

“opaque”: 0.6,

“minVerticalLineCount”: 10

})

bgOffsetX = veriImageUtil.getVerticalLineOffsetX(bgImage)

print("bgOffsetX:{} ".format(bgOffsetX))

使用selenium进行滑动验证(会失败)


首先,我们需要从html中获取滑块验证的图片,通过执行js,将画布像素转为base64,然后python即可获取,进行拖拽处理:

from selenium import webdriver

import time

import base64

from PIL import Image

from io import BytesIO

from selenium.webdriver.support.ui import WebDriverWait

def checkVeriImage(driver):

WebDriverWait(driver, 5).until(

lambda driver: driver.find_element_by_css_selector(‘.geetest_canvas_bg.geetest_absolute’))

time.sleep(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值