如何配置fiddler可以参考我之前的博客 进入百度AI控制台:百度AI控制台,没有账号就注册一个 先上源代码 如果是白嫖,下面直接上使用方法 我的电脑分辨率为19201080(如何查看分辨率:设置->系统->显示) 如果确实模块,直接pip install +模块名 + -i https://pypi.tuna.tsinghua.edu.cn/simple 解决办法是找到pymouse的安装路径,如果不知道在哪里可以用pip安装一下,如果已经安装了会自动提示安装路径,通常都是在python或者ide的Libsite-packages里,比如我的在F:AnacondeaLibsite-packages。 模块安装好之后,我们要改代码里的东西, 解决这个问题(证书问题) 这里我要感谢@江浒一只猫 输入正确答案才能进入,答案在此博客中(加粗的字,不是加粗的标题)
该贴是以微信词达人为基础实践而写,如果我们并没有使用词达人,该源码中关键代码部分和模拟点击原理希望对大家有帮助。某度API申请
随便填就行
立即创建后查看
过程解析
import sys import pyautogui import winsound import operator from pymouse import PyMouse import requests import base64 import os import json import time import time import win32gui, win32ui, win32con, win32api type = 0 lodec = 'C:\responseBody.txt' APP_ID = '*****' # 刚才获取的 ID,下同 API_KEY = '******' SECRECT_KEY = '******' ACCESS_TOKEN = '你生成的access_token' #获取token #第一次使用请先在main中调用一次getToken(),将其返回值access_token填到全局变量ACCESS_TOKEN 中 def getToken(): # client_id 为官网获取的AK, client_secret 为官网获取的SK host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + API_KEY + '&client_secret=' + SECRECT_KEY response = requests.post(host) if response: return response.json().access_token def init(): print("=====================词达人小工具3.0=====================nn") time.sleep(1) print('第一次使用请先在main中调用一次getToken(),将其返回值access_token填到全局变量ACCESS_TOKEN 中') if os.path.getsize(lodec) == 0: print("没有在C盘中找到资源,检查办法:n(1):手动答题一道然后再打开本程序(前面的听力部分不算)n(2):查看C盘下是否存在responseBody.txt文件n(3):检查Fidder配置n程序将在10秒后自动退出") time.sleep(10) exit() print("资源检查成功,开始使用n请将该窗口放置合适位置n程序会每10题暂停3秒,3秒期间你可以操作你的电脑") time.sleep(1) #读取答案 def getAnswer(): print('搜寻答案....') answers = [] data = json.loads(open(lodec, "r", encoding='utf-8').read()); #多选 if data['data']['topic_mode'] in [31] : options = data['data']['options'] for option in options: if option['answer']==True : answers.append(option['content']) #单选 if data['data']['topic_mode'] in [11,22,42] : options = data['data']['options'] for option in options: if option['answer']==True : answers.append(option['content'].replace(' ', '').replace(';', ';').replace(',', ',').replace('.', '').replace('…', '')) #选词 if data['data']['topic_mode'] in [32] : options = data['data']['answer_content']['answer_arr'] for option in options: #print(option) answers.append(option) #填空 if data['data']['topic_mode'] in [51] : type = 1 answers.append(data['data']['answer_content']) for a in answers: print(a) return answers #抓取图片 def getPc(pcname): hwnd = 0 # 窗口的编号,0号表示当前活跃窗口 # 根据窗口句柄获取窗口的设备上下文DC(Divice Context) hwndDC = win32gui.GetWindowDC(hwnd) # 根据窗口的DC获取mfcDC mfcDC = win32ui.CreateDCFromHandle(hwndDC) # mfcDC创建可兼容的DC saveDC = mfcDC.CreateCompatibleDC() # 创建bigmap准备保存图片 saveBitMap = win32ui.CreateBitmap() # 获取监控器信息 MoniterDev = win32api.EnumDisplayMonitors(None, None) w = 480 h = 1040 # w,h #图片大小 # 为bitmap开辟空间 saveBitMap.CreateCompatibleBitmap(mfcDC, w, h) # 高度saveDC,将截图保存到saveBitmap中 saveDC.SelectObject(saveBitMap) # 截取从左上角(0,0)长宽为(w,h)的图片 saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY) saveBitMap.SaveBitmapFile(saveDC, pcname) #文字位置 def getPosition(answers, pcname): positions = [] request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general" # 二进制方式打开图片文件 f = open(pcname, 'rb') img = base64.b64encode(f.read()) params = {"image":img} access_token = ACCESS_TOKEN request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) if response: for r in response.json()['words_result']: flag = False #如果包含中文 for ch in r['words']: if u'u4e00' >= ch or ch >= u'u9fff': flag = True if flag: w = r['words'][4:].replace('.', '') else: w = r['words'] for a in answers: if w.find(str(a)) != -1 or str(a).find(w) != -1: tu = [r['location']['left'], r['location']['top']] positions.append(tu) return positions #屏幕点击答题 def makeAnswer(positions): m = PyMouse() for p in positions: #m.move(p[0], p[1]) m.click(p[0], p[1]) #移动并且在(x,y)位置左击 time.sleep(0.5) m.click(400,1000) if __name__ == "__main__": pcname = 'answers.jpg' init() i = 0 while True: i += 1 #获取正确答案集合 answers = getAnswer() #截取图片 getPc(pcname) #根据正确答案找到答案位置 positions = getPosition(answers, pcname) #点击 makeAnswer(positions) #每10题停留3秒:避免不可控 if i>10: time.sleep(3) print("-------------暂停时期:3秒后继续答题-----------nnn") i = 0
首先
我们将词达人窗口防止左侧高度拉满,宽度最小为以下状态,使用截图软件截图后词达人窗口大小为4801040
其次
这样飞快
其中注意的是出现下方问题
方法如下
这是pymouse的锅
进入pymouse的安装路径打开__init__.py文件;把92行的windows改为pymouse.windows.
改完后会出现
ModuleNotFoundError: No module named ‘pyHook’
现在需要安装pyhook。推荐下载whl文件安装,可以去:https://www.lfd.uci.edu/~gohlke/pythonlibs/这里下载
cmd,然后到下载的路径。然后
pip install pyHook‑1.5.1‑cp36‑cp36m‑win_amd64.whl接着
找到access_token最快的方法是:https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + API_KEY + '&client_secret=' + SECRECT_KEY
把后面的复制下来到上面去最后
方法很简单
仅对我们需要的网站进行解密,就不会报这个错了,配fiddler可以参考我之前的方法
这一步很重要,关乎程序是否执行下去,如果加上了这个地址,点确定,然后重新打开(不出现txt一定要检查这一步)
下面是效果图
模拟点击对单选和多选准确率很高,对填空题准确率很低
参考博客:https://blog.csdn.net/SR02020/article/details/105497043
https://blog.csdn.net/qq_34696203/article/details/83029114
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算