![](http://localhost/1.png)
![](http://localhost/2.png)
python代码如下:
# coding:utf-8 import datetime import math import os import random import re import sys import time from io import BytesIO import ddddocr from PIL import Image, ImageDraw from selenium.webdriver import ActionChains from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from api import get_tiiktok_anti2 import execjs import requests from colorama import Fore, init import api import cooke_path_8 import json from selenium import webdriver from selenium.webdriver.common.by import By # 获取当前文件的目录 cur_path = os.path.abspath(os.path.dirname(__file__)) sys.path.append(cur_path) cookie_path = cooke_path_8.get_cooke_path_8() current_path = cooke_path_8.get_current_path() get_chromedriver_path = cooke_path_8.get_chromedriver_path() import logging logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) ''' nid =1 ss1= "https://mobile.pinduoduo.com/goods.html?goods_id={0}&force_use_web_bundle=1".format(str(nid)) ss2= "https://mobile.pinduoduo.com/goods.html?goods_id={}&force_use_web_bundle=1".format(str(nid)) print(ss1) print(ss2) sys.exit(1) ''' class UpData: def __init__(self, page_max, which): #m3 = execjs.compile(open(r"route.js", encoding='utf-8').read()) #verifyFp = m3.call('mergeFp', '') #print(verifyFp) #exit(1) #dXNlcg== #anNzd3h2Mmc== chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 禁用启用Blink运行时的功能 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) # 去除浏览器检测框 #chrome_options.add_argument('--user-data-dir=' + cookie_path) #chrome_options.add_argument('--proxy-server=http://127.0.0.1:8999') self.driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=get_chromedriver_path) ''' with open(f'{cur_path}' + '/stealth.min.js', encoding='utf-8') as f: js = f.read() self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": js }) ''' self.page_max = page_max + 1 self.page_no = 1 self.page_size = 200 self.detail_sleep_time = 1 self.debug = 0 self.begin_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y/%m/%d') self.end_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y/%m/%d') self.headers = { 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', } self.getVerificationCode() def getVerificationCode(self): base_url = f"https://www.kgcaptcha.com/demo/content?t=4&cindex=2#code_lang" base_url = f"http://127.0.0.1/test.html" self.driver.get(base_url) time.sleep(5) wait = WebDriverWait(self.driver, 10) image2 = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="verify-bar-code"]'))) target_img_url = image2.get_attribute('src') target_image_content = requests.get(target_img_url).content docr = ddddocr.DdddOcr(show_ad=False) target_words = docr.classification(target_image_content) image1 = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="captcha-verify-image"]'))) background_img_url = image1.get_attribute('src') background_image_content = requests.get(background_img_url).content ddet = ddddocr.DdddOcr(det=True, show_ad=False) poses = ddet.detection(background_image_content) img = Image.open(BytesIO(background_image_content)) draw = ImageDraw.Draw(img) click_identify_result = {} for row in poses: # 框字 row = (row[0] - 3, row[1] - 3, row[2] + 3, row[3] + 3) x1, y1, x2, y2 = row draw.line(([(x1, y1), (x1, y2), (x2, y2), (x2, y1), (x1, y1)]), width=1, fill='red') # 裁剪出单个字 corp = img.crop(row) img_byte = BytesIO() corp.save(img_byte, 'png') # 识别出单个字 word = docr.classification(img_byte.getvalue()) click_identify_result[word] = row img.show() # 计算文字点击坐标 img_xy = {} for key, xy in click_identify_result.items(): if key: img_xy[key] = (int((xy[0] + xy[2]) / 2), int((xy[1] + xy[3]) / 2)) logger.info(img_xy) # 计算最终点击顺序与坐标 result = {} for word in target_words: result[word] = img_xy[word] logger.info(result) # 点击坐标 image1_x = image1.location.get('x') image1_y = image1.location.get('y') for xy in result.values(): x = xy[0] * (340 / 552) y = xy[1] * (212 / 344) ActionChains(self.driver).reset_actions() ActionChains(self.driver).move_by_offset(image1_x + x, image1_y + y).click().perform() time.sleep(6000) if __name__ == '__main__': updata = UpData(1, 2)
html代码如下:
自己做一个测试网站
百分百原创 ,大家一起学习共同进步,喜欢逆向的同学可以关注点点赞,也欢迎私聊。