python脚本之领取cf道具

news/2024/9/23 7:22:41/

验证码部分参考https://github.com/ybsdegit/captcha_qq

使用前,设置为100%

验证码部分可以通过调速度来达到想要的速度,速度不建议过快,否则会被检测为人机

实际效果:https://www.bilibili.com/video/BV1CE411M7ym

import numpy as np
import random
import requests
from selenium.webdriver import ActionChains
import time
from selenium import webdriver
from PIL import Image
import os
from selenium.webdriver.support.ui import WebDriverWait
import cv2
import re
import numpy as np
from cv2 import cv2 as cv2 
from matplotlib import pyplot as plt 
class Login(object):def __init__(self):self.url = "https://cf.qq.com/cp/a20200219pull/index.shtml"self.driver = webdriver.Chrome()@staticmethoddef show(name):cv2.imshow('Show', name)cv2.waitKey(0)cv2.destroyAllWindows()@staticmethoddef webdriverwait_send_keys(dri, element, value):"""显示等待输入:param dri: driver:param element::param value::return:"""WebDriverWait(dri, 10, 5).until(lambda dr: element).send_keys(value)@staticmethoddef webdriverwait_click(dri, element):"""显示等待 click:param dri: driver:param element::return:"""WebDriverWait(dri, 10, 5).until(lambda dr: element).click()@staticmethoddef get_postion(chunk, canves):"""判断缺口位置:param chunk: 缺口图片是原图:param canves::return: 位置 x, y"""otemp = chunkoblk = canvestarget = cv2.imread(otemp, 0)template = cv2.imread(oblk, 0)w, h = target.shape[::-1]temp = 'temp.jpg'targ = 'targ.jpg'cv2.imwrite(temp, template)cv2.imwrite(targ, target)target = cv2.imread(targ)target = cv2.cvtColor(target, cv2.COLOR_BGR2GRAY)target = abs(255 - target)cv2.imwrite(targ, target)target = cv2.imread(targ)template = cv2.imread(temp)result = cv2.matchTemplate(target, template, cv2.TM_CCOEFF_NORMED)x, y = np.unravel_index(result.argmax(), result.shape)cv2.rectangle(template, (y, x), (y + w, x + h), (7, 249, 151), 2)cv2.imwrite("yuantu.jpg", template)plt.figure("new")plt.imshow(template)plt.show()return x, y# 展示圈出来的区域@staticmethoddef get_track(distance):"""模拟轨迹 假装是人在操作:param distance::return:"""# 初速度v = 20# 单位时间为0.2s来统计轨迹,轨迹即0.2内的位移t = 0.2# 位移/轨迹列表,列表内的一个元素代表0.2s的位移tracks = []# 当前的位移current = 0da1,da2 = 20,30while current < distance:a = (random.randint(da1, da2))%50  # 加速运动# 初速度v0 = v# 0.2秒时间内的位移s = v0 * t + 0.5 * a * (t ** 2)# 当前的位置current += round(s)# 添加到轨迹列表tracks.append(round(s))# 速度已经达到v,该速度作为下次的初速度v = v0 + a * tv=0tracks.append(distance-current)return tracks@staticmethoddef urllib_download(imgurl, imgsavepath):"""下载图片:param imgurl: 图片url:param imgsavepath: 存放地址:return:"""from urllib.request import urlretrieveurlretrieve(imgurl, imgsavepath)def after_quit(self):"""关闭浏览器:return:"""self.driver.quit()def is_element_exist(self,driver,element):try:driver.find_element_by_id(element)return Trueexcept Exception as err:print(err)return Falsedef login_main(self):# ssl._create_default_https_context = ssl._create_unverified_contextdriver = self.driverdriver.maximize_window()driver.get(self.url)while True:time.sleep(0.5)if self.is_element_exist(driver,"loginIframe"):# 如果没有登陆driver.switch_to.frame("loginIframe")login = driver.find_element_by_class_name("face")self.webdriverwait_click(driver, login)# 切回去driver.switch_to.parent_frame()time.sleep(2)elments = driver.find_elements_by_class_name("btn-get-251")index = 0for i in range(len(elments)):if elments[i].get_attribute("href") == "javascript:getLottery(644854,'','loadOut()','','');":print("找到武器")index = ibreak# 移动到指定位置ActionChains(driver).move_to_element(elments[index]).perform()        # 点击领取self.webdriverwait_click(driver,elments[index])#等待验证码time.sleep(1.5)driver.switch_to.frame(driver.find_element_by_id('tcaptcha_iframe'))  # switch 到 滑块framewhile True:bk_block = driver.find_element_by_xpath('//img[@id="slideBg"]')  # 大图web_image_width = bk_block.sizeweb_image_width = web_image_width['width']bk_block_x = bk_block.location['x']slide_block = driver.find_element_by_xpath('//img[@id="slideBlock"]')  # 小滑块slide_block_x = slide_block.location['x']web_imageSlideBlock_width = slide_block.sizeweb_imageSlideBlock_width = web_imageSlideBlock_width['width']bk_block = driver.find_element_by_xpath('//img[@id="slideBg"]').get_attribute('src')       # 大图 urlslide_block = driver.find_element_by_xpath('//img[@id="slideBlock"]').get_attribute('src')  # 小滑块 图片urlslid_ing = driver.find_element_by_xpath('//div[@id="tcaptcha_drag_thumb"]')  # 滑块os.makedirs('./image/', exist_ok=True)self.urllib_download(bk_block, './image/bkBlock.png')self.urllib_download(slide_block, './image/slideBlock.png')time.sleep(0.5)img_bkblock = Image.open('./image/bkBlock.png')real_width = img_bkblock.size[0]width_scale = float(real_width) / float(web_image_width)position = self.get_postion('./image/bkBlock.png', './image/slideBlock.png')print("原图距离:",position[1],"width_scale:",width_scale,"背景图宽:",real_width,"web上:",web_image_width)real_position = position[1] / width_scalereal_position = real_position - 26print("slide_block_x",slide_block_x,"bk_block_x",bk_block_x)track_list = self.get_track(real_position*0.25)ActionChains(driver).click_and_hold(on_element=slid_ing).perform()  # 点击鼠标左键,按住不放time.sleep(0.2)print('第二步,拖动元素')ActionChains(driver).move_by_offset(xoffset=real_position*0.75, yoffset=0).perform()for track in track_list:ActionChains(driver).move_by_offset(xoffset=track, yoffset=0).perform()  # 鼠标移动到距离当前位置(x,y)time.sleep(0.02)# ActionChains(driver).move_by_offset(xoffset=-random.randint(0, 1), yoffset=0).perform()   # 微调,根据实际情况微调time.sleep(0.1)# print('第三步,释放鼠标')ActionChains(driver).release(on_element=slid_ing).perform()time.sleep(2)print("实际距离",real_position)print(track_list)print('点击完成')#print(self.is_element_exist(driver,"lotteryAlertDialog"))#if driver.find_element_by_id("lotteryAlertDialog")!=None:#driver.refresh()#breakself.after_quit()if __name__ == '__main__':login = Login()login.login_main()

 


http://www.ppmy.cn/news/347812.html

相关文章

CFCF目标跟踪

论文全名&#xff1a;Good Features to Correlate for Visual Tracking 论文摘自IEEE TIP 2018&#xff0c;由Erhan Gundogdu&#xff08;Github网址&#xff09;和A. Aydın Alatan撰写。 摘要 作者提出&#xff1a;基于相关滤波&#xff08;CFB&#xff09;跟踪的深度全卷…

AI识别教程 yolov5 (穿越火线,csgo等FPS游戏识别)

源码: 订阅专栏享所有源码 yolov5 穿越火线角色识别 实战: fps视频 csgo yolo吃鸡

cf微软AIM服务器,CF微软AIM1.1透视自瞄无后坐力

小号姿势&#xff1a;团队个人爆破生化随意屠杀。开启F2墙体识别后&#xff0c;不会瞄墙后面的人&#xff0c;简直就是个人竞技之王 大号姿势&#xff1a;按一下F4键&#xff0c;瞄准位置调到胸部&#xff0c;击杀数控制10人左右&#xff0c;控制连杀率、爆头率、多放空枪 大号…

魔鬼作坊端游脱机封包辅助制作

1.点悟秒杀什么是脱机封包智辅 2.封包脱机智辅与其它类型智辅对比 3.WPE封包拦截工具的基本操作讲解 4.绝密WPE Winsock 拦截函数详细讲解 5.游戏封包数据加密与解密介绍 6.实战使用WPE拦截分析游戏喊话封包 7.轻松分析游戏封包加密解密算法 (1) 8.轻松分析游戏封包加密解密算法…

易语言:游戏辅助 CF队伤“卡秒器“ 编程思路/开发者优化建议

本文是对于一款火热游戏 穿越火线的辅助软件"卡秒器"的原理分析和给开发者的优化建议 基本介绍 很多人看到"卡秒器"这个词语是陌生的 甚至于大多的游戏玩家看到也是非常陌生 但是如果 你玩这款游戏 并且玩了一段时间的开启队友伤害的爆破模式 那么你应该…

教大家分析过掉CF的CRC检测辅助手段

FPS游戏发展至今&#xff0c;阻挡辅助开发者脚步的往往不是数据和功能开发&#xff0c;而是高难度的检测。 现如今&#xff0c;游戏的各种检测的手段越来越多&#xff0c;也越来越五花八门。 列如&#xff1a; 检测参数&#xff0c; 检测堆栈&#xff0c; 检测注入等等。 其中C…

Leetcode---349周赛

题目列表 2733. 既不是最小值也不是最大值 2734. 执行子串操作后的字典序最小字符串 2735. 收集巧克力 2736. 最大和查询&#xff08;这题难度较大&#xff0c;等以后有时间再和大家分享&#xff09; 一、2733、既不是最小值也不是最大值 关键是看到题目中说数组中的元素不…

cf登录游戏只显示服务器的字体,cf辅助灭天大神修复文件字体花样请求解决方法...

cf冰易辅助小编解说硬盘分区魔术师解答方法 在操作体系的历程中会碰见林林总总的问题&#xff0c;比方最常常见文件字体花样请求的状况&#xff0c;许多用户都是初次遇到文件字体花样请求这类状况&#xff0c;所以人人都没有好的处置惩罚要领&#xff0c;怎样能够彻底解决文件字…