本文转载于吾爱破解论坛:https://www.52pojie.cn/thread-1301790-1-1.html
版权归原作者所有如有侵权请立即与我们联系,我们将及时处理
操作说明:
main.exe成品
main.py源码
搞源码的,你需要把这个chromedriver.exe放你的python 环境的\Scripts文件夹中
一般人只需要运行main.exe
第一次运行,请先点1添加添加账号
如果你要自定义产品和按钮
F12弹出调试工具 然后按步骤获取目标按钮的css选择器文本
#pip selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/
#然后记得把chromedriver.exe放你的python 环境的\Scripts文件夹中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
from selenium import webdriver from PyQt5.QtWidgets import QMessageBox, QMainWindow, QTextEdit import time, json class HaiWei(): def __init__(self): # 默认的链接 self.url = '' # 默认的按钮 self.selector = '' self.start_kg = False def addLogin(self, name, window_main, ms): ''' 增加一个登录的cookies 就是分别 登录一下账号 :return: ''' # 创建浏览器对象 try: driver = webdriver.Chrome() driver.get(self.url) QMessageBox.information(window_main, '提醒:', '请在登入好账号后点击确定(不要主动关闭浏览器)', QMessageBox.Ok) except: QMessageBox.warning(window_main, '错误:', '您没有安装Google浏览器或者版本低于86', QMessageBox.Ok) return try: dictCookies = driver.get_cookies() jsonCookies = json.dumps(dictCookies) # 登录完成后,将cookie保存到本地 with open(f'cookies/{name}.json', 'w') as f: f.write(jsonCookies) ms.log_add.emit(f'账号:{name} 保存成功!') driver.close() driver.quit() except: QMessageBox.warning(window_main, '错误:', '请不要提前关闭浏览器!', QMessageBox.Ok) def start(self, name, driver, ms): ''' 开始自动多线程抢华为mate40pro手机,因为我 没成功过,所以如果成功了请自己判断 :param name: 账号备注 :param driver: 浏览器 :param ms: 信号 :return: ''' # 超时 driver.set_page_load_timeout(5000) # 防止页面加载个没完 # 访问一次,不然容易设置不了cookies driver.get(self.url) # 删除第一次建立连接时的cookie driver.delete_all_cookies() # 读取登录时存储到本地的cookie with open(f'cookies/{name}.json', 'r', encoding='utf-8') as f: listCookies = json.loads(f.read()) for cookie in listCookies: driver.add_cookie({ "domain": cookie['domain'], "name": cookie['name'], "path": cookie['path'], "value": cookie['value'] }) driver.get(self.url) i = True while True: if self.start_kg == True: if i == True: ms.log_add.emit( f'账号:{name} 现在开始点击{driver.find_element_by_css_selector(self.selector).text}按钮,祝您好运!') i = False try: elem = driver.find_element_by_css_selector(self.selector) elem.click() except: time.sleep(1) try: elem = driver.find_element_by_css_selector('#checkoutSubmit') ms.log_add.emit(f'账号:{name} 恭喜您,成功抢到!,赶紧付款吧!') elem.click() except: pass time.sleep(0.2) def setting(self, url, selector): ''' 自定义抢购的链接和疯狂点击的按钮(css选择器文本输入方法也很简单) 获取选择器selector文本步骤: 1.打开你的网站然后在浏览器中找到你需要不断点击的按钮后右键,菜单选择[审核元素\检查] 2.之后就会出来调试器,就在高亮的元素上右键菜单依次找到 Copy > Copy selector 然后点击就成功复制到文本了 3.将文本填进去就好了(最好是懂点css的基础,或者自己找规律来改) :param url:自定义网址 :param selector:css选择器文本 :return: ''' if url != None and url != '': self.url = url else: self.url = 'https://www.vmall.com/product/10086726905036.html' if selector != None and selector != '': self.selector = selector else: self.selector = '#pro-operation > a.product-button02' print(self.url, self.selector) |
紧急更新说明20201120:
1.发现在某些时候会过快的点击返回 具体原因 因为时间过于仓促,我来不及获取网页源码,没办法调试,因此暂时删除了返回功能
.(反正网友的经验也是第一次没成后面基本也排不到)
2.修复了没抢购成功,却提示成功的bug,并不会导致有啥问题,但是还是修复了.
紧急更新说明20201120:
1.发现在某些时候会过快的点击返回 具体原因 因为时间过于仓促,我来不及获取网页源码,没办法调试,因此暂时删除了返回功能
.(反正网友的经验也是第一次没成后面基本也排不到)
2.修复了没抢购成功,却提示成功的bug,并不会导致有啥问题,但是还是修复了.
紧急更新说明20201120:
1.发现在某些时候会过快的点击返回 具体原因 因为时间过于仓促,我来不及获取网页源码,没办法调试,因此暂时删除了返回功能
.(反正网友的经验也是第一次没成后面基本也排不到)
2.修复了没抢购成功,却提示成功的bug,并不会导致有啥问题,但是还是修复了.
请务必下载最新版本
源码和成品:(20201120 10:53)
最下方
我刚写完,准备靠它买我的第一部华为手机了!支持国产从你我做起!你值得拥有!
天猫华为官方自营店抢购目标按钮文本:
#J_LinkBuy
京东华为官方自营店抢购目标按钮文本:
#choose-btn-ko
(如果不支持cookies提前保存,淘宝的反爬检测是有的,京东不清楚)
最后随便添加几次账号(这样才会打开多个浏览器)然后直接点 2启动浏览器 之后分别的去手动登入每一个账号
感谢成功后前来反馈的网友们!为我们提供了更完整的脚本逻辑!
温馨提示:cookies保存有效时间是有限的,所以尽量在快到时间的时候提前个20-10分钟重新的去登入账号获取cookies
常见问题解决办法:
1.右键管理员权限运行
2.没有google浏览器,或者版本低于86,请自行卸载后下载最新版本(一般一点就崩溃的,基本就是这个原因)
https://www.google.cn/chrome/
3.google浏览器版本版本不对应, 我这里有86 和87版本的插件.可以根据你的浏览器版本来替换
替换这个文件,下面的链接是下载地址.里面有两个版本的,根据你的浏览器来替换,默认的是86的.因为google浏览器更新了,后面我也会换成87的为默认
https://www.lanzoui.com/isdWeiim1ji
演示视频复制后自己访问:
https://www.bilibili.com/video/BV1q54y1z7Fc/