精华内容
下载资源
问答
  • 某东茅台python自动抢购
    2021-01-08 17:30:30

    京东购物车抢购商品Python代码

     

     

    1. import sys

    2. from jd_spider_requests import JdSeckill

    3.  
    4.  
    5. if __name__ == '__main__':

    6. a = """

    7.  
    8. oooo oooooooooo. .oooooo..o oooo o8o oooo oooo

    9. `888 `888' `Y8b d8P' `Y8 `888 `"' `888 `888

    10. 888 888 888 Y88bo. .ooooo. .ooooo. 888 oooo oooo 888 888

    11. 888 888 888 `"Y8888o. d88' `88b d88' `"Y8 888 .8P' `888 888 888

    12. 888 888 888 8888888 `"Y88b 888ooo888 888 888888. 888 888 888

    13. 888 888 d88' oo .d8P 888 .o 888 .o8 888 `88b. 888 888 888

    14. .o. 88P o888bood8P' 8""88888P' `Y8bod8P' `Y8bod8P' o888o o888o o888o o888o o888o

    15. `Y888P

    16.  
    17. 功能列表:

    18. 1.预约商品

    19. 2.秒杀抢购商品

    20. """

    21. print(a)

    22.  
    23. jd_seckill = JdSeckill()

    24. choice_function = input('请选择:')

    25. if choice_function == '1':

    26. jd_seckill.reserve()

    27. elif choice_function == '2':

    28. jd_seckill.seckill_by_proc_pool()

    29. else:

    30. print('没有此功能')

    31. sys.exit(1)

    32.  

    更多相关内容
  • 答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。 1 环境 操作系统:Windows Python版本:3.7.2 手机系统:Android 2 需求分析 这里我们的需求是实现自动抢红包。首先要打开微信,进入到指定的...
  • 又到年底了,相信对于在外地的朋友们来说,火车票是到年底最头痛的一件事了,但作为...快发挥你的特长,下面这篇文章主要给大家介绍了如果通过100行Python代码实现自动抢火车票的相关资料,需要的朋友可以参考下。
  • 本项目是利用了selenium+chrome来自动抢狗,类似于爬虫,可以设置抢狗的金额范围。验证码识别是调用百度云端OCR识别,速度不算快,1到2秒左右,准确率50%吧,如果嫌不准也可以自己手敲验证码。
  • 提到红包,就不得不提Xposed框架,它简直是个红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险...

    目录:

    0 引言

    1 环境

    2 需求分析

    3 前置准备

    4 抢红包流程回顾

    5 代码梳理

    6 后记

    0 引言

    提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个前提条件:手机需要root,对于苹果手机的话就需要越狱了。现在的手机想要root或越狱并不容易,同时这会对手机安全性带来一些风险,抢红包本身只是个娱乐活动,这样做就得不偿失了。

    为了自动抢红包,python能帮我们实现吗?

    答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。

    小编整理的一整套系统的py thon学习教程从最基础的到框架再到项目实战的学习资料都有整理,送给每一位小伙伴, 有想学习py thon编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

    加扣裙:835017344,此群的用途是仅供给CSDN粉丝交流使用

    1 环境

    操作系统:Windows

    Python版本:3.7.2

    手机系统:Android

    2 需求分析

    这里我们的需求是实现自动抢红包。首先要打开微信,进入到指定的群聊,识别微信红包、执行抢红包的动作。这就是关键的步骤,简单清晰。

    因为电脑版本的微信没有抢红包的功能,我们只能手机微信,那么就需要把手机连上电脑,通过电脑控制手机来自动抢,那就需要确保「adb」命令可正常执行。

    识别微信中的消息,是红包还是普通的信息,这里我们通过聊天消息的元素标识来判断。这里我们借助了「Airtest IDE」工具来实现。

    3 前置准备

    3.1 打开手机的USB调试

    要正常使用「adb」需要打开USB调试,设置项通常出现在手机系统设置中的[开发人员选项]里面。

    在手机上打开USB调试后,接下来我们通过Airttest IDE验证 adb 运行是否正常。

    3.2 下载安装Airtest IDE

    开始之前先,先解释下airttest相关概念:

    Airtest 是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。

    Poco是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用。

    AirtestIDE 是一个我们配套推出的跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写脚本。

    Airtest IDE 的下载地址: http://airtest.netease.com/

    下载之后,解压打开就可以使用,Airtest IDE的界面如下:

    使用AirtestIDE对Android应用进行自动化操作,第一步就需要连接Android设备。

    1. 请使用USB线连接手机,手机上出现的 允许USB调试 弹窗,点击 确定。
    2. 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新。
    3. 点击列表内对应设备的 Connect 完成连接。
    4. 若设备未刷出,点击 refresh ADB 按钮。

    若连接遇到问题,请参考Airtest的官方教程:Android真机连接

    4 抢红包流程回顾

    打开微信,在最左侧的Tab页,微信消息列表,我们需要从这里选择指定的群聊来抢红包。

    在AirtestIDE中,我们可以通过暂停功能,冻结当前的UI树形结构来精确地检视UI控件,我们先来分析下这个页面中元素标识。

    ▲聊天页面中整体的群聊消息的元素标识 com.tencent.mm:id/d1v

    ▲聊天页面中单个群聊消息的元素标识 com.tencent.mm:id/b6e

    接下来进入我们准备要抢红包的群聊中,识别出红包并执行抢红包的动作。

    我们先来看看红包的标识:

    ▲红包标识的示例1 com.tencent.mm:id/aql

    ▲红包标识的示例2 com.tencent.mm:id/aql

    点击红包,记录下弹出的大红包页面中“开”的元素标识

    ▲大红包页面中”开“的标识 com.tencent.mm:id/d02

    这里我们需要判断是红包是否有效,比如已被领完或是已被自己领取的红包就是无效的,我们在执行时可以跳过这些。

    ▲已领取红包的标识 com.tencent.mm:id/apk

    ▲已被领完红包的标识 com.tencent.mm:id/apk

    我们用的各元素的标识都已取到,接下来就是组织我们的代码。

    5 代码梳理

    首先得打开微信,利用Airtest启动app应用,只须一行代码即可搞定,如下

    # 打开手机微信
    poco(text='微信').click()

    获取当前页面中所有所有群聊的名称

    # 群聊消息的元素标识
    Chat_msg = poco(name='com.tencent.mm:id/d1v').offspring('com.tencent.mm:id/b6e')
    # 获取当前页面中所有群聊的名称
    Chat_names = []
    Chat_names = list(map(lambda x: x.get_text(), Chat_msg))

    选择并进入指定的群聊

    # 指定抢红包的群聊名称
    chat = input('请指定群聊名称:')
    if chat in Chat_names:
        index = Chat_names.index(chat)
        # 点击进入指定的群聊
        Chat_msg[index].click()
    在微信聊天页面中,获取当前页面中的所有消息元素。
    
    msg_list = poco("android.widget.ListView").children()

    遍历消息并查找红包

    for msg in msg_list:
        # 微信红包的标识
        LuckyMoney = msg.offspring('com.tencent.mm:id/aql')
        # 已失效红包(比如已领取、已被领完)的标识
        Invalid = msg.offspring('com.tencent.mm:id/aqk')
    
        # 判断红包是否有效并抢起来!
        if LuckyMoney:
            pass

    在LuckyMoney中定义抢红包的动作

    if Invalid.exists() and (Invalid.get_text()=='已领取' or Invalid.get_text()=='已被领完'):
        print(f'红包已无效,跳过……')
        continue
    else:
        print(f'发现一个新红包,抢起来!')
        poco("com.tencent.mm:id/d1v")
        msg.click()
    
        click_open = poco("com.tencent.mm:id/d02")
        if click_open.exists():
            click_open.click()
        keyevent('BACK')

    6 后记

    若我们在一台电脑上并不想安装Airtest IDE,还能执行这个脚本吗?

    当然可以,只需要安装好「pocoui」这个第三方库就可以“抛弃”它了!

    pip install pocoui

    利用 AirtestIDE 创建一个项目时,设备类型选中 Android,就会在编码区生成一段初始化的代码。

    from airtest.core.api import *
    auto_setup(__file__)
    
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

    我们自己编写的Python代码中也需要加上这段初始化的代码。

    再次强调,在执行脚本时要确保手机连上电脑,并确保「adb」命令正常运行。

    展开全文
  • 年中购物618大狂欢开始了,各大电商又开始了大力度的折扣促销,我们的小胖又给大家谋了一波福利,淘宝APP直接搜索:小胖发福利,...这篇文章主要介绍了用Python完成毫秒级单,助你秒杀淘宝大单,需要的朋友可以参考下
  • 本项目使用python编程实现自动化抢购,使用chromedriver + selenium 技术,链接淘宝服务器时间,进行精准抢购!
  • 话不多说,下面小编将从基础配置开始,让大家实现自动抢红包的功能。1).下载并打开AirtestIDE编辑器。AirtestIDE编辑器采用的是压缩包的形式, 小编已经为大家下载好压缩包,大家只需要下载下来(看文末找小助手拿),...

    话不多说,下面小编将从基础配置开始,让大家实现自动抢红包的功能。

    1).下载并打开AirtestIDE编辑器。

    AirtestIDE编辑器采用的是压缩包的形式, 小编已经为大家下载好压缩包,大家只需要下载下来(看文末找小助手拿),并直接解压缩,点击运行AirtestIDE.exe可执行文件即可。

    2).打开手机上的“USB调试”按钮

    然后电脑连接Android手机,手机上出现“允许USB调试” 弹窗,点击 “确定”。如下图所示:

    0b34a54eb3895aca6169542e4f868e53.png

    3).连接手机

    在AirtestIDE的界面右侧点击“刷新ADB”并连接手机,如果能正确连接的话,界面如下图所示:

    399f5b2e7791901369560cb3fb201410.png

    4).开始根据抢红包流程来找寻红包元素

    首先,我们在AirtestIDE窗口的左侧 Poco辅助窗口中,选择 Android设备,通过锁定手机界面来确定想找寻的元素,看一下效果:

    7e94ffdaa4c40d32aafec2aba8409be4.png

    上图中,在AirtestIDE的编辑器中,我们打开手机微信后,编辑器左侧会自动的显示出手机对应的元素标识内容,我们点击左侧元素标识后,其对应的手机界面内容会在编辑器的右侧高亮显示。我们抢红包时,一般需要确定抢哪个群聊,群聊的元素表示为” com.tencent.mm:id/e3x“。

    我们点击进入该群聊后,根据相同的手法来确定群聊信息中的 红包元素标识。如下图所示:

    cbed5299f3c8ab56ca05cf41812005bc.png

    敲黑板,划重点来了上图中我们同样点击元素标识来找到红包,可以发现,无论红包是否被抢完,微信红包都会有” 微信红包“的字眼,其元素标识为” com.tencent.mm:id/ra“。而当红包被领取完时,红包上就会出现” 已领取“的字眼,或者是” 已领完“等字眼。

    对于已领取其对应的元素标识为” com.tencent.mm:id/r0“。如果我们还可以领取红包,那么我们就可以点击"微信红包"这个元素标识,然后找到”开“红包的元素标识并点击。

    有了上面的经验,我们也能很快的找到”开“的元素标识,其元素标识为” com.tencent.mm:id/den“,来看一效果:

    4bd33c3a50f2072f2232357151e2cb49.png

    03.代码编写

    有了上述的内容分析,我们的程序也很容易编写,只需要将上面的流程用程序的方式来撰写即可。

    首先我们在AirtestIDE的左上角依次点击”文件“->"新建脚本"->".py纯python(高级用户)",程序会自动帮助我们新建一个默认的python脚本。我们只需要在这个脚本上添加我们的内容即可,程序如下:

    28a9c0f480c9c936e47a15d251e45976.png

    程序首先打开微信,然后找到我们想要抢红包的群,进入到该群后,程序会遍历群里的信息来找到红包的标识,并判断红包是否可强,如果可强的话,就会帮助我们自动的抢到红包。

    说了这么多,最后一起来看一下效果吧

    32e08168a2cee626b72a015344a6abc7.gif

    (加载需要6秒)

    马上要过年啦,相信小伙伴都有很多群,尤其是除夕夜,初一,初五各大群里面都会发很多红包,每次菜鸟哥都会因为手速慢,而错过一些红包,这下好了,有了这个神奇,把电脑加起来,自动抢!哈哈哈!

    大家可以下载源码,架好神器,坐等红包,你那秒速抢红包,一定会把你的七大姑八大姨,亲戚朋友,惊的一愣一愣的,嘿嘿!

    如何获取源码

    大家可以直接找小助手拿哈!在公众号后台输入: 小助手,备注暗号:抢红包

    菜鸟哥也会在春节期间发红包的,会在视频号和朋友圈都发的,有兴趣的同学可留意,提前关注我们的视频号哈!

    菜鸟学Python-视频号

    度爆款文案

    点这里,直达菜鸟B站大本营!

    展开全文
  • 主要为大家详细介绍了Python实现自动上京东手机的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 原理:通过Appnium实现的自动化设备菜,可以多台设备同时开 环境要求:Python3,requirements.txt下的所有依赖,adb驱动,ATX(启动脚本后会自动安装) 使用步骤: 1. 先下载Python环境,并pip install所有...
  • 主要为大家详细介绍了Python实现抢购IPhone手机,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 在京东上抢购商品老是失败,在提交订单时发现已经没货,由此确定京东已经到的标志是提交订单,有时好像是付款才算到成功。预售商品虽然可以加入购物车,但却是不可选的,因此在自动抢购过程中必须先勾选。 一般...

    1. 问题分析

    • 在京东上抢购商品老是失败,在提交订单时发现已经没货,由此确定京东已经抢到的标志是提交订单,有时好像是付款才算抢到成功。预售商品虽然可以加入购物车,但却是不可选的,因此在自动抢购过程中必须先勾选。
    • 一般京东抢购的过程是:登录账号 → 进入购物车 → 选择抢购商品 → 点击去结算 → 点击提交订单 → 选择付款方式并付款。基于这种情况利用 python 代码实现自动登录京东账号,自动滑动验证码进行验证,自动勾选购物车商品并提交订单,剩下的付款操作手动进行。

    在这里插入图片描述

    2. 基础情况

    以下环境满足其一即可:

    • 已安装 python 解释器和 Pycharm 软件,已切换镜像源并绑定。
    • 已安装 Anaconda 软件和 Pycharm 软件并绑定 Anaconda 自带的 python 解释器,已切换镜像源并绑定。

    可以不限于以上两种开发环境配置方式。

    3. 安装 selenium

    selenium 是一个 python 自动化测试工具,利用 selenium 工具包可以对浏览器网页进行诸如点击和下载内容等操作,简单实用。

    3.1 对于使用单独 python 解释器的情况,使用命令行 cd 进入解释器安装路径下的 Scripts 路径下,运行代码 pip install selenium 进行安装。

    在这里插入图片描述
    3.2 对于使用 Anaconda 自带 python 解释器的情况,打开 Anaconda Prompt,运行代码 activate root 进入基础环境(有些版本打开时就已经在基础环境 base 下就不用执行这一步),接下来再运行代码 pip install selenium 进行安装。

    在这里插入图片描述
    3.3 等待安装完成之后运行 python 进入交互式环境,运行代码 import selenium 不报错则表示安装成功。

    在这里插入图片描述

    4. 下载 Edge 浏览器驱动

    可以不限于使用 Edge 浏览器,使用 Chrome,FireFox 等都是可以的,但需要下载对应的驱动。点击链接 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/进入 edge 驱动下载界面,勾选稳定版 x64 开始下载,此处根据自己电脑系统进行选择。

    在这里插入图片描述
    下载得到一个压缩包,右键点击解压到当前文件夹,将其中的 msedgedriver.exe 复制到自己当前的项目工程根路径下。

    在这里插入图片描述

    5. 登录网页京东

    5.1 先打开 edge 浏览器并最大化窗口,进入京东登录界面。

    driver = webdriver.Edge(executable_path='./msedgedriver.exe')  # 打开 Edge 浏览器
    driver.maximize_window()  # 最大化 Edge 浏览器窗口
    driver.get('https://passport.jd.com/new/login.aspx')  # 京东登录界面链接
    

    5.2 选择账户登录选项,自动输入用户名和密码,最后点击登录。

    driver.find_element_by_link_text("账户登录").click()  # 选择账户登录并点击
    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_id("loginname").send_keys(username)  # 找到用户名输入框并输入用户名
    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_id("nloginpwd").send_keys(password)  # 找到密码输入框输入密码
    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_id("loginsubmit").click()  # 找到登录并点击
    

    6. 滑动验证登录

    由于京东的安全限制,点击登录之后需要进行滑动验证才能完成登录,滑动验证码本身由两幅图像组成,一个作为可滑动的小滑块,一个是缺失滑块结构的背景。

    6.1 首先获取滑动验证码的两幅图像,灰度化处理后保存到本地。

    image_big_path = r'//div/div[@class="JDJRV-bigimg"]/img'  # 滑动验证码大图(大背景)
    image_small_path = r'//div/div[@class="JDJRV-smallimg"]/img'  # 滑动验证码小图(小滑块)
    
    image_big = driver.find_element_by_xpath(image_big_path).get_attribute("src")  # 验证码背景图的完整路径
    image_small = driver.find_element_by_xpath(image_small_path).get_attribute("src")  # 验证码滑块图的完整路径
    
    request.urlretrieve(image_big, 'background.jpg')  # 下载验证码背景图到本地
    request.urlretrieve(image_small, 'slideblock.jpg')  # 下载验证码滑块图到本地
    
    cv2.imwrite('background.jpg', cv2.imread('background.jpg', 0))  # 将验证码背景图读取为灰度图并覆盖原图
    
    slideblock = cv2.imread('slideblock.jpg', 0)  # 将验证码滑块图读取为灰度图
    slideblock = abs(255 - slideblock)  # 对验证码滑块图反灰化处理
    cv2.imwrite('slideblock.jpg', slideblock)  # 保存处理后的验证码滑块图
    
    background = cv2.imread('background.jpg')  # 读取验证码背景图(灰度)
    slideblock = cv2.imread('slideblock.jpg')  # 读取验证码滑块图(灰度)
    

    6.2 再利用 opencv 中的模板匹配函数 matchTemplate 得到滑块图像在背景上的相似度矩阵。

    result = cv2.matchTemplate(background, slideblock, cv2.TM_CCOEFF_NORMED)  # 模板匹配,获得滑块在背景上的相似度矩阵
    

    6.3 利用 numpy 中的元素索引函数 unravel_index 获取匹配度最大值在原相似度矩阵中的索引。

    _, distance = np.unravel_index(result.argmax(), result.shape)  # 获得要移动的距离
    

    注意在该函数中索引坐标系与一般理解略有不同。

    在这里插入图片描述

    6.4 模拟人越来越快地移动滑块到指定位置。由于京东的安全管制,必须采取一定的滑块移动策略才能尽量不被检测出来非手动,实际实验中滑动验证正确的步数也是不确定的,大概 1~10 步左右。

    dist_finished = 0  # 已经移动的距离
    dist_remaining = distance  # 剩余的距离
    dist_move = 5  # 每次移动的距离
    
    element = driver.find_element_by_xpath(button_slide)  # 选取滑动验证码滑块
    ActionChains(driver).click_and_hold(element).perform()  # 模拟鼠标在滑块上点击并保持
    
    # 模拟滑动开始和滑动结束时比较慢,中间阶段比较快
    while dist_remaining > 0:
    
        dist_move += dist_move  # 不断加速地移动滑块
    
        # 每次移动滑块都带有正负偏差来模拟手动移动时的滑动不稳定
        ActionChains(driver).move_by_offset(dist_move, random.randint(-3, 3)).perform()  # 模拟鼠标水平向右拖动滑块
    
        dist_remaining -= dist_move  # 剩余距离减去已移动的距离
        dist_finished += dist_move  # 已完成距离加上已移动的距离
    
    ActionChains(driver).move_by_offset(dist_remaining, random.randint(-3, 3)).perform()  # 模拟鼠标水平回移拖动滑块修正
    ActionChains(driver).release(on_element=element).perform()  # 模拟松开鼠标
    

    7. 自动购买商品

    7.1 登录成功后点击我的购物车打开另一个浏览器页面。

    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_link_text("我的购物车").click()  # 找到我的购物车并点击
    

    7.2 全选购物车中的商品,点击结算并提交订单。

    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_name('select-all').click()  # 购物车全选
    time.sleep(0.5)  # 等待 0.5 秒
    driver.find_element_by_link_text("去结算").click()  # 找到去结算并点击
    driver.implicitly_wait(2)  # 隐式等待 2 秒
    driver.find_element_by_id("order-submit").click()  # 找到提交订单并点击
    

    8. 完整实现源码

    import cv2
    import time
    import random
    import datetime
    import numpy as np
    from urllib import request
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    
    
    # 移动滑动验证码中的滑块
    def checkMove(button_slide, distance):
        dist_finished = 0  # 已经移动的距离
        dist_remaining = distance  # 剩余的距离
        dist_move = 5  # 每次移动的距离
    
        element = driver.find_element_by_xpath(button_slide)  # 选取滑动验证码滑块
        ActionChains(driver).click_and_hold(element).perform()  # 模拟鼠标在滑块上点击并保持
    
        # 模拟不断加速移动滑块
        while dist_remaining > 0:
    
            dist_move += dist_move  # 不断 加速移动滑块
    
            # 每次移动滑块都带有正负偏差来模拟手动移动时的滑动不稳定
            ActionChains(driver).move_by_offset(dist_move, random.randint(-3, 3)).perform()  # 模拟鼠标水平向右拖动滑块
    
            dist_remaining -= dist_move  # 剩余距离减去已移动的距离
            dist_finished += dist_move  # 已完成距离加上已移动的距离
    
        ActionChains(driver).move_by_offset(dist_remaining, random.randint(-3, 3)).perform()  # 模拟鼠标水平回移拖动滑块修正
        ActionChains(driver).release(on_element=element).perform()  # 模拟松开鼠标
    
    
    # 获取滑动验证码构成的两张图片并计算应移动的距离
    def getCheckImage():
        image_big_path = r'//div/div[@class="JDJRV-bigimg"]/img'  # 滑动验证码大图(大背景)
        image_small_path = r'//div/div[@class="JDJRV-smallimg"]/img'  # 滑动验证码小图(小滑块)
        button_slide = '//div[@class="JDJRV-slide-inner JDJRV-slide-btn"]'  # 滑动验证码滑块按钮
    
        image_big = driver.find_element_by_xpath(image_big_path).get_attribute("src")  # 验证码背景图的完整路径
        image_small = driver.find_element_by_xpath(image_small_path).get_attribute("src")  # 验证码滑块图的完整路径
    
        request.urlretrieve(image_big, 'background.jpg')  # 下载验证码背景图到本地
        request.urlretrieve(image_small, 'slideblock.jpg')  # 下载验证码滑块图到本地
    
        cv2.imwrite('background.jpg', cv2.imread('background.jpg', 0))  # 将验证码背景图读取为灰度图并覆盖原图
    
        slideblock = cv2.imread('slideblock.jpg', 0)  # 将验证码滑块图读取为灰度图
        slideblock = abs(255 - slideblock)  # 对验证码滑块图反灰化处理
        cv2.imwrite('slideblock.jpg', slideblock)  # 保存处理后的验证码滑块图
    
        background = cv2.imread('background.jpg')  # 读取验证码背景图(灰度)
        slideblock = cv2.imread('slideblock.jpg')  # 读取验证码滑块图(灰度)
    
        result = cv2.matchTemplate(background, slideblock, cv2.TM_CCOEFF_NORMED)  # 模板匹配,获得滑块在背景上的相似度矩阵
        _, distance = np.unravel_index(result.argmax(), result.shape)  # 获得要移动的距离
    
        return button_slide, distance
    
    
    # 滑动验证
    def slideIdentify():
        slideButton, distance = getCheckImage()  # 获取滑块和滑块需要移动的距离
        print(f'本次滑块需要移动的距离为: {distance}')  # 打印滑块需要移动的距离
        checkMove(slideButton, distance / 1.3)  # 移动滑块,1.3 是一个实验修正值
    
    
    # 登录京东网页版
    def login(username, password):
    
        driver.get('https://passport.jd.com/new/login.aspx')  # 京东登录界面链接
    
        driver.implicitly_wait(2)  # 隐式等待 2 秒
        driver.find_element_by_link_text("账户登录").click()  # 找到账户登录并点击
    
        driver.implicitly_wait(2)  # 隐式等待 2 秒
        driver.find_element_by_id("loginname").send_keys(username)  # 找到用户名输入框并输入用户名
    
        driver.implicitly_wait(2)  # 隐式等待 2 秒
        driver.find_element_by_id("nloginpwd").send_keys(password)  # 找到密码输入框输入密码
    
        driver.implicitly_wait(2)  # 隐式等待 2 秒
        driver.find_element_by_id("loginsubmit").click()  # 找到登录并点击
    
        while True:
            try:
                slideIdentify()  # 进行滑动验证
                time.sleep(2)  # 等待 3 秒
            except:
                print("登录成功")
                break
    
    
    # 定时购买东西
    def buy(buy_time):
        driver.implicitly_wait(2)  # 隐式等待 2 秒
        driver.find_element_by_link_text("我的购物车").click()  # 找到我的购物车并点击
    
        total_windows = driver.window_handles  # 所有打开的窗口
        driver.switch_to.window(total_windows[1])  # 句柄迁移到第二个窗口
    
        while True:
            current_time = datetime.datetime.now()  # 获取当前日期时间
            if current_time.strftime('%Y-%m-%d %H:%M:%S') == buy_time:  # 如果当前时间等于指定购买时间
                driver.implicitly_wait(2)  # 隐式等待 2 秒
                driver.find_element_by_name('select-all').click()  # 购物车全选
                time.sleep(0.5)  # 等待 0.5 秒
                driver.find_element_by_link_text("去结算").click()  # 找到去结算并点击
                driver.implicitly_wait(2)  # 隐式等待 2 秒
                driver.find_element_by_id("order-submit").click()  # 找到提交订单并点击
                driver.implicitly_wait(2)  # 隐式等待 2 秒
                print('current time : ' + current_time.strftime('%Y-%m-%d %H:%M:%S'))  # 打印当前时间
                print('购买成功 !')  # 购买成功
    
    
    if __name__ == '__main__':
        driver = webdriver.Edge(executable_path='./msedgedriver.exe')  # 打开 Edge 浏览器
        driver.maximize_window()  # 最大化 Edge 浏览器窗口
        login('你的用户名', '你的密码')  # 登录京东
        buy('2021-08-14 12:00:00')  # 定时购买
    

    结 语

    网页自动化操作确实可以实现抢购商品,相比手动操作会更快,但仅靠上述代码想与某些专业抢购的服务器进行比较还是相去甚远。如果有需要可以尝试一下,就当是一个 python 实战项目学习。

    在这里插入图片描述

    参考博客

    1. https://blog.csdn.net/netuser1937/article/details/111594315
    2. https://blog.csdn.net/jolly10/article/details/109516130
    展开全文
  • selenium+python自动抢购源码

    千次阅读 2018-09-28 18:04:12
    [python] view plain copy print?   华为MATE10抢购源码,使用selenium+python+Chrome 大概流程: 1、按帐号生成多个线程开启浏览器 2、登陆帐号密码,有时需要验证码,此处有...
  • 0 引言提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个...为了自动抢红包,python能帮我们实现吗?答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。1 环境操...
  • 来源:python专栏github:https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/Tool/Grab_LuckyMoney目录:0 引言1 环境2 需求分析3 前置准备4 红包流程回顾5 代码梳理6 后记0 引言...
  • Python自动抢火车票神器!!

    千次阅读 2021-01-25 13:24:48
    一年一度的火车票大战正式拉开序幕… 然饿大多数人碰到的是这种情况:当你满心期待摩拳擦掌准备抢票的时候,你会发现一票难求!想回趟家真难! 那么作为程序猿的你,当然要用程序猿的方式来抢票!下面介绍几款在...
  • 一、Airtest的介绍1)Airtest的简介Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言...
  • Python爬虫,京东自动登录,在线抢购商品
  • 0 引言提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个...为了自动抢红包,python能帮我们实现吗?答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。1 环境操...
  • 0 引言提到抢红包,就不得不提Xposed框架,它简直是个抢红包的神器,但使用Xposed框架有一个...为了自动抢红包,python能帮我们实现吗?答案是肯定的,本文就带大家一起探索下用Python如何实现自动抢红包。1 环境操...
  • 今天给大家分享的教程就是通过Python来实现京东商品抢购!废话不多说,马上开始今天的案例分享! 问题分析 我想你们应该也用过手机过那种秒杀价的商品,等了老半天好不容易时间到了,结果到头来一场空!商品抢购...
  • 导语: 快要过年了~话说铁汁除夕也怎么过的呀?小时候只顾着放鞭炮现在不一样了小编是除夕夜只顾着各个群里蹲红包。 但是手动肯定没戏,毕竟手can谁也没... 执行自动红包程序,进入发红包的微信群(可以暂时

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,572
精华内容 5,028
关键字:

python自动抢