① Imagx=248.53是基于企查查的滑块横条的X轴长度,其他的网址或滑块需要重新配置
②param url1:背景链接
③param url2:滑块链接
④param geetest1:滑块背景图片
把背景链接存储为图片文件保存下来
⑤param geetest2:为滑块图片
代码示例如下:
import base64
import os
import cv2
import numpy as np
import requests
def QichachaYanzheng(url1:str,url2:str,imgpath,ImgX=248.53):
# 企查查默认验证码宽度248.53
# 下载链接图片到指定目录
'''
:param url1:背景链接
:param url2:滑块链接
:param geetest1:滑块背景图片
:param geetest2:为滑块图片
:return:
'''
geetest1=download_img(url1,"gt1",imgpath)
geetest2=download_img(url2,"gt2",imgpath)
with open(geetest1, "rb") as f: # 转为二进制格式
base64_data1 = base64.b64encode(f.read()) # 使用base64进行加密
with open(geetest2, "rb") as f: # 转为二进制格式
base64_data2 = base64.b64encode(f.read()) # 使用base64进行加密
return CalculateNotchDistance(base64_data1,base64_data2,ImgX)
def CalculateNotchDistance(mBgB64String:str, mBlockB64String:str, mImageWebShowX:int):
img_BgBgr = cv2.imdecode(np.frombuffer(base64.b64decode(mBgB64String), np.uint8), cv2.IMREAD_COLOR)
img_BgGray = cv2.cvtColor(img_BgBgr, cv2.COLOR_BGR2GRAY)
img_BlockGray = cv2.imdecode(np.frombuffer(base64.b64decode(mBlockB64String), np.uint8), cv2.IMREAD_GRAYSCALE)
dct_Result = cv2.minMaxLoc(cv2.matchTemplate(img_BgGray, img_BlockGray, cv2.TM_CCOEFF_NORMED))
return int(dct_Result[2][0] * mImageWebShowX / img_BgBgr.shape[1])
# 下载和保存图像
def download_img(img_url,ImgName,imgpath=os.path.join(os.path.dirname(os.path.dirname(os.getcwd())),"res\验证码暂存")):
# 验证码图片默认暂存位置:"C:\Users\EDY\Documents\UiBot\creator\Projects\高级\res\验证码暂存"
api_token = "fklasjfljasdlkfjlasjflasjfljhasdljflsdjflkjsadljfljsda"
header = {"Authorization": "Bearer " + api_token} # 设置http header,视情况加需要的条目,这里的token是用来鉴权的一种方式
r = requests.get(img_url, headers=header, stream=True)
print(r.status_code) # 返回状态码
if r.status_code == 200:
open(imgpath+"\\{}.png".format(ImgName), 'wb').write(r.content) # 将内容写入图片
print("done")
return imgpath+"\\{}.png".format(ImgName)
def test():
import sys
return sys.path
# if __name__ == '__main__':
# test()
把滑块图片存储为图片保存下来
其他包自行导入下载,cv2包百度网盘链接如下:
链接: cv2 提取码: 9r8k