第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 百度莱茨狗python自动抢狗 调用百度OCR或者人工识别验证码

百度莱茨狗python自动抢狗 调用百度OCR或者人工识别验证码

时间:2022-12-27 14:15:32

相关推荐

百度莱茨狗python自动抢狗 调用百度OCR或者人工识别验证码

本项目是利用了selenium+chrome来自动抢狗,类似于爬虫,可以设置抢狗的金额范围。验证码识别是调用百度云端OCR识别,速度不算快,1到2秒左右,准确率50%吧,如果嫌不准也可以自己手敲验证码。

主文件

from splinter.browser import Browserfrom time import sleepimport urllib.requestimport recognize_img as ocr#from selenium.webdriver.support.wait import WebDriverWait#from selenium.webdriver.support import expected_conditions as EC#from mon.by import By# 初始化驱动driver = Browser(driver_name="chrome",executable_path=r"./chromedriver.exe")# 初始化浏览器窗口大小# driver.driver.set_window_size(1400, 1000)driver.driver.maximize_window()driver.visit("https://pet-/")# 这里先自己登陆莱茨狗官网,然后把登陆后的cookies复制到这里,{'name':'key', 'value':'value'}格式添加driver.driver.add_cookie({'name':'__cfduid', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'BAIDUID', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'FG', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'PSTM', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'BIDUPSID', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'MCITY', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'H_PS_PSSID', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'BDRCVFR[feWj1Vr5u3D]', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'PSINO', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'BDORZ', 'value':'xxxxxx'})driver.driver.add_cookie({'name':'BDUSS', 'value':'xxxxxx'})#def wait_display(xpath):# WebDriverWait(driver.driver, 10, 0.5).until(EC.element_to_be_clickable((By.XPATH, xpath))) # 显性等待def is_chinese(s):if s >= u'\u4e00' and s<=u'\u9fa5':return Trueelse:return Falsedef get_cheap_dog():sleep(0.5)driver.find_by_text(u"价格").click()# driver.driver.find_element_by_xpath("//header/div/div/span[2]").click()sleep(1) # 强制等待# driver.driver.implicitly_wait(3) # 隐式等待# wait_display("//div[@class='dog']") # 显性等待dog_list = driver.driver.find_elements_by_xpath("//div[@class='dog']")#/dl/dd/h3/span[2]")return dog_listdef get_verification_code():sleep(0.5)image_url = driver.driver.find_element_by_xpath("//div[@class='sms-img']/img").get_attribute("src")response = urllib.request.urlopen(image_url)verify_img = response.read()with open('download.jpg', 'wb') as f:f.write(verify_img)v_code = ocr.start_recognize(r"download.jpg")return v_codeif __name__ == '__main__':isFirst = Truewhile True:try:if isFirst:isFirst = Falseelse:driver.visit("https://pet-/")dog_list = get_cheap_dog()for item in dog_list:price = int(float(item.find_element_by_xpath("dl/dd/div/span/span").text))# print(price)if price <= 500: # 设置金额item.click()while True:sleep(0.5)driver.find_by_text("确认购买").click()# v_code = "EFR9"# sleep(1)# 百度OCR识别# v_code = get_verification_code()# while len(v_code) != 4 or not v_code.isalnum() or is_chinese(v_code): # 长度不等于4,不是字母和数字,包含中文#driver.driver.find_element_by_xpath("//i[@class='icon-font icon-shuaxin']").click()#v_code = get_verification_code()# driver.driver.find_element_by_xpath("//input").send_keys(v_code)# 人工输入sleep(0.5)v_code = ""driver.driver.find_element_by_xpath("//input").send_keys("")while True:v_code = driver.driver.find_element_by_xpath("//input").get_attribute("value")# print("v_code:",v_code)if len(v_code) == 4:breakelse:sleep(0.5)sleep(0.5)driver.find_by_text("立即购买").click()sleep(1)msg = driver.driver.find_element_by_xpath("//span[@class='mint-toast-text']").textif msg != "验证码错误":print("="*10,msg,"="*10)breakbreakexcept Exception as error:print(error)

OCR验证码识别文件代码

import timefrom PIL import Imagefrom PIL import ImageFileImageFile.LOAD_TRUNCATED_IMAGES = Truefrom aip import AipOcr""" (百度ocr)你的 APPID AK SK """APP_ID = 'xxxxxx'API_KEY = 'xxxxxx'SECRET_KEY = 'xxxxxx'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)""" 读取图片 """def get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()def start_recognize(file):start = time.time()im = Image.open(file)w, h = im.sizeregion = im.resize((int(w * 1.5), int(h * 1.5)))region.save(r"./tmp.png")image = get_file_content(r"tmp.png")respon = client.basicGeneral(image) # 用完500次后可改respon = client.basicAccurate(image)titles = respon['words_result'] # 获取问题print("respon:", respon)print("验证码:", titles[0]['words'])end = time.time()print('程序用时:' + str(end - start) + '秒')return titles[0]['words']if __name__ == '__main__':start = time.time()im = Image.open(r"D:\python_work\other\OpenCV\Chapter 7_Code\images\number.PNG")w, h = im.sizeprint("xx:{}".format(im.size))# region = im.crop((70,200, w-70,700)) #裁剪的区域region = im.resize((int(w * 1.5), int(h * 1.5)))region.save(r"./crop_test1.png")image = get_file_content(r"crop_test1.png")respon = client.basicGeneral(image) # 用完500次后可改respon = client.basicAccurate(image)titles = respon['words_result'] # 获取问题print("respon:", respon, "\ntitles:", titles[0]['words'])end = time.time()print('程序用时:' + str(end - start) + '秒')

代码地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。