吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8495|回复: 47
收起左侧

[Python 转载] 某宝秒杀关键模块及思路

  [复制链接]
露露的大雕 发表于 2020-2-29 11:36
本帖最后由 露露的大雕 于 2020-2-29 15:14 编辑

python自学

鉴于近期口罩真缺
某宝的一部分商家都有整点秒杀

虽然公司提供了充足的口罩,但系还是去试了下,结果就是人手永远比不过机器

所以昨晚连夜写了个秒杀py,本着试试水结果还真的可以抢到,所以分享给还没抢到口罩的小伙伴们

话不多说直接上码


这里需要火狐浏览器

安装后把自己的路径改好


[Python] 纯文本查看 复制代码
import os
from selenium import webdriver
import datetime
import time
 
#deckodreiver
firefox = os.path.abspath(r"C:\Program Files\Mozilla Firefox\firefox.exe")
os.environ["webdriver.firefox.bin"] = firefox
driver = webdriver.Firefox()
driver.maximize_window()

然后就是登录了

为了避免泄露这里用到扫码登录

自己在打开的火狐浏览器界面扫码登录

我设置了十秒休眠用于登录

动作快的自己改下

[Python] 纯文本查看 复制代码
def login():
    driver.get("https://cart.taobao.com/cart.htm")
    time.sleep(10)
    if driver.find_element_by_id("J_SelectAll2"):
        driver.find_element_by_id("J_SelectAll2").click()

然后到我们的下单函数了

[Python] 纯文本查看 复制代码
def buy(buytime):
    i=0
    while True:
        now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        if now > buytime:
            try:
                driver.find_element_by_link_text("结 算").click()
                try:
                    time.sleep(0.5)
                    driver.find_element_by_link_text('提交订单').click()
                    print(f"抢购成功,请尽快付款")
                    break
                except:
                    time.sleep(0.2)
                    driver.find_element_by_link_text('提交订单').click()
                    print(f"抢购成功,请尽快付款")
                    driver.get("https://cart.taobao.com/cart.htm")
                    time.sleep(0.9)
                    if driver.find_element_by_id("J_SelectAll2"):
                        driver.find_element_by_id("J_SelectAll2").click()        
                    print(f"再次尝试提交订单"+now)
                    if i>2:
                        break
                    i+=1
                    pass
            except:
                driver.get("https://cart.taobao.com/cart.htm")
                time.sleep(0.9)
                if driver.find_element_by_id("J_SelectAll2"):
                    driver.find_element_by_id("J_SelectAll2").click()        
                print(f"再次尝试提交订单"+now)
                if i>2:
                        break
                i+=1
                pass

下单这里做了异常重试

不过像秒杀类活动基本都是俩次不中就凉凉了



最后把main函数补上

if __name__=="__main__":
    login()
    buy('2020-02-25 09:59:58')

到这里代码就完善了
接下来讲下代码思路
让我们把视角回到登录那里
driver.get("https://cart.taobao.com/cart.htm")
很明显就是跳转到淘宝购物车页面,这时候只需要扫码登录就能到购物车了
而 J_SelectAll2 则为淘宝页面全选框的标识符,其实页面有俩个全选按钮 使用J_SelectAll1 也是同等效果
然后就到我们的关键点了
根据我们的main函数可以看到 我们执行完登录后就到下单了
下单开始部分写的是无限循环函数逐秒判断时间是否已经到了可以抢购的时间
等时间到了以后自动点击结算按钮进入锁单页面
可能有小伙伴发现了结算后程序休眠了0.5秒
这里是因为我的网络延时怕页面还没加载完全程序抛出异常
如果你网络好的可以调低
最后就到付款页面自己输入密码付款就完成了

由于不在抢购时间这里用我购物车里面的衣服测试
运行程序后会自动吊起火狐浏览器托管状态
进入某宝购物车页面
自行扫码登录

1582942068(1).jpg

休眠十秒后自动全选购物车商品
360截图20200229100822911.jpg

然后就是无限循环每秒轮询一次等待抢购时间到了
自动下单
下单失败会抛出异常并返回购物车重试
360截图20200229100847936.jpg
下单成功的会跑到支付页面
自行输入支付密码
ok

感谢提醒
这里需要用到火狐的一个插件geckodriver.exe

免费评分

参与人数 7吾爱币 +6 热心值 +6 收起 理由
xiaokailuo + 1 + 1 用心讨论,共获提升!
zjr3721 + 1 + 1 我很赞同!
a6670950810 + 1 用心讨论,共获提升!
gspojie + 1 + 1 用心讨论,共获提升!
小兴818 + 1 + 1 谢谢@Thanks!
白菜小白桦 + 1 + 1 热心回复!
silence_litao + 1 学习学习

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

1124828050 发表于 2020-2-29 19:18
本帖最后由 1124828050 于 2020-2-29 19:24 编辑

打不开火狐是咋回事..
Traceback (most recent call last):
  File "D:\python\lib\site-packages\selenium\webdriver\common\service.py", line 72, in start
    self.process = subprocess.Popen(cmd, env=self.env,
  File "D:\python\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "D:\python\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/张张/PycharmProjects/untitled/taobao.py", line 10, in <module>
    driver = webdriver.Firefox()
  File "D:\python\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 164, in __init__
    self.service.start()
  File "D:\python\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.


进程已结束,退出代码 1
微信截图_20200229191754.png
KILLCALL 发表于 2020-2-29 11:48
相信 发表于 2020-2-29 11:54
梦泽阿 发表于 2020-2-29 11:58
非常实用,顶顶
头像被屏蔽
那年听风 发表于 2020-2-29 11:59
提示: 作者被禁止或删除 内容自动屏蔽
阿宁 发表于 2020-2-29 12:09
好帖子 可惜不会用。。。
头像被屏蔽
fanxing666 发表于 2020-2-29 12:17
提示: 作者被禁止或删除 内容自动屏蔽
极地企鹅 发表于 2020-2-29 12:29
改几行代码就适用chrome了
tianmx 发表于 2020-2-29 12:43
这绝对神器啊!
w92vv 发表于 2020-2-29 12:50
厉害了 感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 03:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表