利用 python 羽毛球抢场思路启发

2024-5-24

前几周一直因为抢不到羽毛球场而苦恼,因此主要想了两种思路来实现。

1.利用 requests 发送请求

这个方法不吃延迟,但是发送请求的 header 中有一项 wxkey 是动态变化的,需要用微信打开网页授权获得。

仍然未成功,显示【 false null null null】,可能是提交的内容不对

今晚用副管试试

2.利用 python 自动化实现

用机器模拟鼠标点击,识别网页因素,这种方法避免 wxkey 的获取,但成功率较低,吃网络延迟。

2024-5-25

利用第二种方法(自动化实现),引用python的selenium库,程序分为两大部分,定时与抢购的功能实现

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
#主要抢票功能实现
def bm_purchase(url,b):
    struct_openTime = b
    openTime = time.strptime(struct_openTime, "%Y-%m-%d %H:%M:%S")
    openTime = time.mktime(openTime)
    request_cnt = 0
    while True:
        # nowTime = int(time.mktime(time.localtime()))
        a = time.localtime(time.time())
        a1 = time.strftime("%Y-%m-%d %H:%M:%S", a)
        print(a1, end='   ')
        print(struct_openTime)
        if time.time() >= openTime:
            driver = webdriver.Edge()
            driver.get(url)
            driver.find_element(by=By.XPATH, value='//*[@id="48"]').click()
            driver.find_element(by=By.XPATH, value='/html/body/div[1]/section/div[3]/div/a[3]').click()
            driver.find_element(by=By.XPATH, value='//*[@id="buttonsubmit1"]').click()

if __name__=='__main__':
    url = r'https://26501.koksoft.com/weixinordernewv7.aspx?wxkey=153DC84BBF7CABBB49618F7ED48D5A310A30AB1DF70AD3A9079EFA9C7B7114A8E18FE0CAB00BFCE3E03AC7D9F37CF80833EDA9EA35FC70BDC979922C0760136629D44D39056C957A2152255A1452B241E54CD45B5F0EA648755EBDAD4300F61B0876572007BCD5345F4431DC89C2D6D8&lxbh=Y&orderdate=2024-05-26'
    time1 = "2024-5-26 8:00:00"
    bm_purchase(url,time1)
    input()

短暂试了一下,发现有点吃网络延迟,明天抢票试一下

效果视频python的selenium库_哔哩哔哩_bilibili

2024-5-26

一:利用selenium模拟,在7:59:50定时打开网页,却发现因为网络延迟,网页无法加载出来,在8:01左右,才能正常开抢,效率很低,并且需要不停更换场地id

优点倒是代码简单

二:转而思考reques这种不需打开网页的方法,利用后台直接发送post请求

但不知为何,回应的总是【false,null,null,null】,思索后应该是自己提交表单里的searchparam不对,是url解码后的

再试已经被该网址屏蔽,换ip和换useragent都没有,大概是屏蔽了我的校园网账户,恶意请求场地

晚一会再试试

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值