50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import http.client
|
|
import json
|
|
import subprocess
|
|
import os
|
|
|
|
tempDir = os.getenv('XDG_RUNTIME_DIR', '.')
|
|
conn = http.client.HTTPConnection('localhost', 8888)
|
|
|
|
params = """{
|
|
"level": "debug",
|
|
"media": "image/png",
|
|
"input_type": "text"
|
|
}"""
|
|
|
|
def getCaptcha():
|
|
conn.request("POST", "/v1/captcha", body=params)
|
|
response = conn.getresponse()
|
|
|
|
if response:
|
|
responseStr = response.read()
|
|
return json.loads(responseStr)
|
|
|
|
def getAndSolve(idStr):
|
|
conn.request("GET", "/v1/media?id=" + idStr)
|
|
response = conn.getresponse()
|
|
|
|
if response:
|
|
responseBytes = response.read()
|
|
fileName = tempDir + "/captcha.png"
|
|
with open(fileName, "wb") as f:
|
|
f.write(responseBytes)
|
|
ocrResult = subprocess.Popen("gocr " + fileName, shell=True, stdout=subprocess.PIPE)
|
|
ocrAnswer = ocrResult.stdout.readlines()[0].strip().decode()
|
|
return ocrAnswer
|
|
|
|
def postAnswer(captchaId, ans):
|
|
reply = {"answer": ans, "id" : captchaId}
|
|
conn.request("POST", "/v1/answer", json.dumps(reply))
|
|
response = conn.getresponse()
|
|
if response:
|
|
return response.read()
|
|
print(responseStr)
|
|
|
|
|
|
for i in range(0, 10000):
|
|
captcha = getCaptcha()
|
|
captchaId = captcha["id"]
|
|
ans = getAndSolve(captchaId)
|
|
print(i, postAnswer(captchaId, ans))
|