使用Python脚本自动订餐

本文介绍了如何使用Python脚本自动订餐,包括参数分析、响应解析、脚本编写和定时任务设置。作者分享了关键接口的分析过程,如获取菜单和下单接口的参数,以及如何利用Mac的launchctl实现定时执行。最后,提醒注意接口稳定性,并提供了一份全面的Python学习资源清单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数分析

自动点餐无非就是模拟人的行为,自动请求一些关键接口。于是分析了一下美餐网的web端接口,发现关键接口如下:

1.获取菜单接口:meican.com/preorder/ap…???
2.下单接口:meican.com/preorder/ap…???

有了接口只是第一步,第二步开始分析、尝试接口的哪些参数是静态的,哪些是动态的。

首先通过多个请求,可以得知,上述两个关键接口中的client_idclient_secret是静态的固定不变的,猜测可能是web端的身份。

然后第一个接口中的restaurantUniqueId可以发现多次请求并没发生变化,并且通过命名基本可以得出,应该是类似企业食堂在美餐那边的一个唯一id。

第一个接口中的targetTime,通过数据样例分析,以及对比其他非关键接口数据,可以得知,应该是企业在美餐网设置的点餐截止时间。例如我们公司配置的是早餐6:00截止点餐,那么这个targetTime就是 yyyy-MM-dd +06:00。

最后第一个接口还有一个参数tabUniqueId ,最开始我以为是完全静态的,后面通过踩坑得知,这个应该是代表每一餐的唯一id,早、中、晚均不一样。

响应分析

第一个接口拿到的关键响应如下(忽略了一些):

"dishList": [
        {
   
            "dishSectionId": xxxx,
            "id": xxxx,
            "isSection": true,
            "name": "晚餐",
            "originalPriceInCent": 0,
            "priceInCent": 0,
            "priceString": ""
        },
        {
   
            "dishSectionId": xxxx,
            "id": y1,
            "isSection": false,
            "name": "周五 水饺&花生米拌黄瓜",
            "originalPriceInCent": 1100,
            "priceInCent": 1100,
            "priceString": "11"
        },
        {
   
            "dishSectionId": xxxx,
            "id": y2,
            "isSection": false,
            "name": "周五 A套餐 小鸡炖蘑菇&干炸小黄鱼&肉沫豆腐&土豆片炒肉",
            "originalPriceInCent": 1100,
            "priceInCent": 1100,
            "priceString": "11"
        }
    ]

这个需要结合第二个接口参数来分析,哪些是有用的信息,第二个接口的请求参数如下:

{
   "corpAddressRemark":"","corpAddressUniqueId":"xxxx","order":orderP,"remarks":remarkP,"tabUniqueId":uu['tab'],"targetTime":targetTime,"userAddressUniqueId":"xxxx"}

其中targetTime应该与第一个接口的一致。remarks没懂到底有没有用,tabUniqueId跟上个接口也是一致。最后order是跟第一个接口响应有关的,如下:

[{
   "count":1,"dishId":y1}]

其中dishId就是第一个接口dishList中的id。好了关键信息有了,接下来就可以开始编写脚本了。

脚本编写

脚本就不废话了,由于Python不是主力语言,平时写的少,而且由于是摸鱼时间🐟来写的,所以写的比较粗糙和不规范。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import sys
import requests
import json
import datetime


tomorrow = (datetime.datetime.now()+datetime.timedelta(days=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值