diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/gan_rao_xian.py b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/gan_rao_xian.py index be394ef..27e907b 100644 --- a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/gan_rao_xian.py +++ b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/gan_rao_xian.py @@ -1,4 +1,7 @@ +import random + from PIL import Image +from xin_fei_ocr import run_ocr import numpy as np import cv2 @@ -87,18 +90,34 @@ def enhance(img_file): def image_clip(img_file): """图片切割成单个字体便于识别""" img = cv2.imread(img_file, 0) - clip_imgs = [] + clip_imgs = {} num = 1 for y in range(0, 300, 100): for x in range(10, 300, 100): # 裁剪坐标为[y0:y1, x0:x1] cropped = img[y:y + 100, x:x + 100] - clip_imgs.append(cropped) cv2.imwrite(f"./img_a/f-{num}.jpg", cropped) + res = run_ocr(f"./img_a/f-{num}.jpg") + clip_imgs[res.rstrip()] = coordinate(num) num += 1 return clip_imgs +def coordinate(num): + coordinate_dict = { + 1: random.randint(0, 9), + 2: random.randint(10, 19), + 3: random.randint(20, 29), + 4: random.randint(300, 309), + 5: random.randint(310, 319), + 6: random.randint(320, 329), + 7: random.randint(600, 609), + 8: random.randint(610, 619), + 9: random.randint(620, 629) + } + return coordinate_dict.get(num) + + def run(): image_a = noise_image('img_a/a.png') image_a.save('./img_a/a-test.png') @@ -108,8 +127,10 @@ def run(): image_c.save('./img_a/c-test.png') image_d = enhance('./img_a/c-test.png') cv2.imwrite('./img_a/d-test.png', image_d) - image_clip('./img_a/d-test.png') + text_dict = image_clip('./img_a/d-test.png') + return text_dict if __name__ == '__main__': - run() + res = run() + print(res) diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a-test.png b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a-test.png index a0eb341..26de751 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a-test.png and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a-test.png differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a.png b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a.png index db9ecd7..bf4eef5 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a.png and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/a.png differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/b-test.png b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/b-test.png index 332549a..058b449 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/b-test.png and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/b-test.png differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/c-test.png b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/c-test.png index aea9e08..a2e22c3 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/c-test.png and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/c-test.png differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/d-test.png b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/d-test.png index 8a1e1be..b5a88f7 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/d-test.png and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/d-test.png differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-1.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-1.jpg index b20f17f..7686734 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-1.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-1.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-2.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-2.jpg index 2f24928..093d91d 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-2.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-2.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-3.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-3.jpg index 53a9542..e621a6c 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-3.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-3.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-4.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-4.jpg index 49ed0a1..cdc0146 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-4.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-4.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-5.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-5.jpg index 0bd36f1..d2b11ca 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-5.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-5.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-6.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-6.jpg index 9a35336..fefc61f 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-6.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-6.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-7.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-7.jpg index 59874b8..dee7b0c 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-7.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-7.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-8.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-8.jpg index f4a7841..fd79ee7 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-8.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-8.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-9.jpg b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-9.jpg index d018ce5..6faa164 100644 Binary files a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-9.jpg and b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/img_a/f-9.jpg differ diff --git a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/main.py b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/main.py index a7ed1c7..d1283fe 100644 --- a/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/main.py +++ b/猿人学Web端爬虫攻防刷题平台/猿人学第8题-验证码图文点选/main.py @@ -1,9 +1,7 @@ -from PIL import Image +import gan_rao_xian +import requests import re import base64 -import requests -import time -import json class YuanrenXuan(object): @@ -12,24 +10,47 @@ class YuanrenXuan(object): self.url = "https://match.yuanrenxue.cn/api/match/8_verify" self.sum_value = 0 - def get_task(self, i): - t = int(time.time()) * 1000 + def get_task(self): req = requests.get(self.url) + text = re.findall(r'请依次点击:---
(.*)
---')
img = re.findall(r'', req.json().get('html'))[0]
img = img.replace('data:image/jpeg;base64,', '')
- print(img)
page_content = base64.b64decode(img)
- with open('img/1.png', 'wb') as f:
+ with open('img_a/a.png', 'wb') as f:
f.write(page_content)
- exit()
- return req.text
+ return text_list
+
+ def get_match(self, page, answer):
+ url = f"https://match.yuanrenxue.cn/api/match/8?page={page}&answer={answer}"
+ payload = {}
+ headers = {
+ 'cookie': 'sessionid=iikaj9bo7vzqv4mz1xvryl13o7z98l13;'
+ }
+ response = requests.request("GET", url, headers=headers, data=payload)
+ print(response.json())
def run(self):
- for i in range(1, 6):
- res_dict = json.loads(self.get_task(i))
- for j in res_dict.get('data'):
- self.sum_value += j.get('value')
- print(self.sum_value)
+ num = 1
+ while True:
+ text_list = self.get_task()
+ print(text_list)
+ answer_list = []
+ text_dict = gan_rao_xian.run()
+ print(text_dict)
+ for text in text_list:
+ answer_list.append(str(text_dict.get(text)))
+ answer = '|'.join(answer_list)
+ if 'None' in answer:
+ continue
+ print(num, answer)
+ self.get_match(num, answer)
+ num += 1
+
+ if num == 5:
+ break
+
+ exit()
if __name__ == '__main__':