[网络爬虫] 网络爬虫实践:大麦网演唱会预约抢票 【待续】

1 人工最优抢票流程

人工最优抢票流程,也是爬虫程序抢票流程的最优流程。

1. 提前准备事项:
    设置登录密码、邮箱、解绑淘宝,账号绑定中只绑定【支付宝】
        操作路径:我的-账号安全-登录密码、邮箱设置
    提前设置好观演人、收货地址
        操作路径:我的-服务-观演人、收货地址
        注意事项:
            若绑定了多个观演人信息,记得把多余的先删掉,只留下【确定要去的观演人信息】
            地址,同理,提前填好,并设置为【默认地址】
    提前设置好【抢票攻略】:
        1、预约场次和票档
            注意事项:提前预约想看的场次(xx月xx日 xx:00)、票档,抢票时会自动勾选
        2、预约抢票提醒
        3、预选本次实名观演人
2. 开抢前10分钟,重启手机,只打开:大麦网APP(抢票等待页面)、支付宝APP
    大麦网APP : 页面流程
        抢票等待页面 := 演唱会详情页
            不用退出抢票页面,可以刷新几遍,等待抢票的倒计时
            页面下方的倒计时为0时,右下角的【预约抢票按钮】会自动变成【立即抢票】,此时点击进去即可,不用退出重进
        抢票确定页面
            注意事项:本页面含场次、票档、数量、价格、价格明细(汇总)等信息、【确定】按钮
            操作路径:抢票等待页面-抢票确定页面
        提交订单按钮
            注意事项:
                本页面的标题:确认订单;本页面含演唱会的场次、票档、观演人(列表)、配送方式、支付方式、价格(汇总)等信息;【提交订单】按钮
                本页面进入/刷新不成功时,大概率可能出现【努力刷新】字样的按钮,此时不要退出,一直持续点击【努力刷新】按钮
                在本页面点击【提交订单】按钮时,可能出现"同一时间下单人数太多,建议您稍后再试、【返回】、【继续尝试】"弹窗,就一直点击【继续尝试】
                直至提交订单成功后,会出现含【我知道了】按钮的弹窗
            操作路径:抢票等待页面-抢票确定页面-提交订单(-发起支付宝支付唤醒页面)

2 爬虫脚本(Python版) // TODO

2.0 核心依赖

pickle

pickle是Python的标准库之一,它提供了一种序列化和反序列化Python对象的方式。在Python中,pickle模块允许我们将对象转换为字节流,以便在文件中文件中存储或在网络上传输。要使用pickle,我们无需单独安装它,因为它在Python的标准库中已经包含了。

2.1 核心API分析

抢票确定

  • API1
GET https://mtop.damai.cn/h5/mtop.damai.wireless.follow.relation.update/1.2/?jsv=2.7.2&appKey=12574478&t=1714810094347&sign=cb66912e3b7b44d421a8c2830473fe55&api=mtop.damai.wireless.follow.relation.update&v=1.2&ecode=1&H5Request=true&type=originaljson&timeout=10000&dataType=json&valueType=original&forceAntiCreep=true&AntiCreep=true&useH5=true&data=%7B%22operateType%22%3A1%2C%22targetId%22%3A%225534397471551%22%2C%22targetType%22%3A%2210%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%2C%22platform%22%3A%228%22%2C%22comboChannel%22%3A%222%22%7D

1. request.headers : 略

2. request.queryParams
jsv: 2.7.2
appKey: 12574478
t: 1714810094347
sign: cb66912e3b7b44d421a8c2830473fe55
api: mtop.damai.wireless.follow.relation.update
v: 1.2
ecode: 1
H5Request: true
type: originaljson
timeout: 10000
dataType: json
valueType: original
forceAntiCreep: true
AntiCreep: true
useH5: true
data: {"operateType":1,"targetId":"5534397471551","targetType":"10","dmChannel":"damai@damaih5_h5","platform":"8","comboChannel":"2"}

  • API2
GET https://mtop.damai.cn/h5/mtop.damai.item.calcticketprice/2.0/?jsv=2.7.2&appKey=12574478&t=1714813341116&sign=4cead34919ee86c3986ceddfe2e00ff7&type=originaljson&dataType=json&v=2.0&H5Request=true&AntiCreep=true&AntiFlood=true&api=mtop.damai.item.calcTicketPrice&requestStart=1714813341099&data=%7B%22itemId%22%3A%22785391770909%22%2C%22performId%22%3A%22214273036%22%2C%22calculateTag%22%3A%220_0_0_0%22%2C%22skuParamListJson%22%3A%22%5B%7B%5C%22priceId%5C%22%3A%5C%22274111309%5C%22%2C%5C%22price%5C%22%3A198%2C%5C%22count%5C%22%3A1%7D%5D%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%7D

1. request.headers : 略

2. request.queryParams
jsv: 2.7.2
appKey: 12574478
t: 1714813341116
sign: 4cead34919ee86c3986ceddfe2e00ff7
type: originaljson
dataType: json
v: 2.0
H5Request: true
AntiCreep: true
AntiFlood: true
api: mtop.damai.item.calcTicketPrice
requestStart: 1714813341099
data: {"itemId":"785391770909","performId":"214273036","calculateTag":"0_0_0_0","skuParamListJson":"[{\"priceId\":\"274111309\",\"price\":198,\"count\":1}]","dmChannel":"damai@damaih5_h5"}

3. request.formData(URLEncoded)
null

4. response
略

提交订单

  • API1
POST https://mtop.damai.cn/h5/mtop.damai.trade.order.build.h5/1.0/?jsv=2.7.2&appKey=12574478&t=1714813362091&sign=9b0a958509fdcb9aecd944bd0a92b5f6&type=originaljson&dataType=json&v=1.0&H5Request=true&AntiCreep=true&AntiFlood=true&api=mtop.damai.trade.order.build.h5&method=POST&ttid=%23t%23ip%23%23_h5_2014&globalCode=ali.china.damai&tb_eagleeyex_scm_project=20190509-aone2-join-test&requestStart=1714813362087

1. request.headers : 略

2. request.queryParams
jsv: 2.7.2
appKey: 12574478
t: 1714813362091
sign: 9b0a958509fdcb9aecd944bd0a92b5f6
type: originaljson
dataType: json
v: 1.0
H5Request: true
AntiCreep: true
AntiFlood: true
api: mtop.damai.trade.order.build.h5
method: POST
ttid: #t#ip##_h5_2014
globalCode: ali.china.damai
tb_eagleeyex_scm_project: 20190509-aone2-join-test
requestStart: 1714813362087

3. request.formData(URLEncoded)
data: {"buyNow":true,"exParams":"{\"damai\":\"1\",\"channel\":\"damai_app\",\"umpChannel\":\"100031004\",\"subChannel\":\"damai@damaih5_h5\",\"atomSplit\":1,\"signKey\":\"clh+aXlVWQtmR1l/T1thcHVZdm92WlkBY01OfU5JYnBxWXxtcVRYDnA7IxMqMBMEBjUcCgA5PGs=\",\"rtc\":1,\"serviceVersion\":\"2.0.0\",\"customerType\":\"default\"}","buyParam":"785391770909_1_5534397471550","dmChannel":"damai@damaih5_h5"}
bx-ua: 227!SSiSphLNYIFQWYBK4h3ADDudZ P4JL9j4lPPOrzYq/XWnoR3DxnL3XQWqmmnmHByVlEuOfvfanHWSaMOWZov3DQzbQYHDppCnXQt5JvHa7KznoRvmknLIXljqmiH9OW5BpzuOEHnaAmWnoR8mknD6GaWqmgUcLPEANp1 1PX5 sznok8mxnD3XQWpaYFIWvinXPPOJjXaQmWntkkKknL3D0SqQVXlpMinXPPOJjXa7szSd7kDWnZfiYSrYPXDpvCHn0aOXzXa7SI1RdT5AyCgJrDfI7KOYes KaS43BnUf3nJnXNaZkGgsCLWnOh5ffiy8jQcA9wgfStJnu1/GSLUDQpXHnTWIDC1CblGs D6O9zvEvbIIKpFvOekt9rgB5fU GohS2j2qNZbDJUVrN69mivw2DFt5TtPKmo9X1smJM0AcZLDUWhoN2gwpirKMLAyzfXZt73tHX1jLHAHOyrDTlr89 u44sgSWBAR4tQ3IgxwEp6PwaQGZyNEE coBrq/b/KARLvU9/iTSQ b7i4/V3Y5DZEsFQqLgRJYyFGlXsIjnib4ys74A/yqjfFCX2OqA/LjG63IZYtX6GIbzLcOE9pBur2gjVfW4cKiLtZWJ/guSzxM3shjqcG8JOrt3oXouLY5BU6Zb7v7/AXgl9C2ddy p1Tq0O3h0R/ Czg9dnuEpM7P0iSMqzAn74T4R1hfrEg9YcIt FSwJX8dx lc1WqvLovjUnWBUY98knp5623FhJt3rakJL7MX5MyYrgdNl3/vjuZIZUheoHZ Ly8xMiE2ZkEMrKRqEJdT ABm/FD6CNvaOcGQEyUk4wMeMQWd0UMf5D9a2WNf3HXQ/1XVjqXUD7ufjD0AlmsoQhzWCAz/ESf1Z6La0fCGqd22K 5NDJuKH1oy9dlTBBS0fCWb4BeH2NyHq7xZ6YDTRy6AT3cO KXcQLEp9PkPu7Lybl1sBO7RwHT9c2Gkqe1XMeAww4p1soqC0rDFCJxHE5/f3m qM cqX0zhZD9ARgkx0C6euDixLZ/ee39bwJjwyXyWeW33qc /VVfJsO8IJHohaUU6nsj8JD0WIY4 um3tsmUiqLhTuXfiVV5 2uiNc95Dm1XeXnIqy3WLbfLqU8LD495B3fs0ytBhRwY/CZPaUdmXfOma3 w6UJDBrftSiPpFCpMlXQraj24uDi BV8BjXsqOPhhuTbS53DhVgJHUkEhr9Gcwpb0lnv6G1EksFg1o0X8wMA93yhgQsyfUhSTKR6ZTAAn5hLG
bx-umidtoken: GC84F9690FD97F60B2A0B9189F46237C22EB70D3F8C70FC9271

4. reponse : 略
配送方式、支付方式等信息

  • API2 : 点击【提交订单】后
POST https://mtop.damai.cn/h5/mtop.damai.trade.order.create.h5/1.0/?jsv=2.7.2&appKey=12574478&t=1714816978249&sign=81f14319c63540a8119400dfea7229b9&v=1.0&post=1&type=originaljson&timeout=15000&dataType=json&isSec=1&ecode=1&AntiCreep=true&ttid=%23t%23ip%23%23_h5_2014&globalCode=ali.china.damai&tb_eagleeyex_scm_project=20190509-aone2-join-test&H5Request=true&api=mtop.damai.trade.order.create.h5&submitref=c29fbcc93ac73d5a26aeda91b47bfd0db4fda1b6235332c5fa269aea70fc3865

1. request.headers : 略

2. request.queryParams
jsv: 2.7.2
appKey: 12574478
t: 1714816978249
sign: 81f14319c63540a8119400dfea7229b9
v: 1.0
post: 1
type: originaljson
timeout: 15000
dataType: json
isSec: 1
ecode: 1
AntiCreep: true
ttid: #t#ip##_h5_2014
globalCode: ali.china.damai
tb_eagleeyex_scm_project: 20190509-aone2-join-test
H5Request: true
api: mtop.damai.trade.order.create.h5
submitref: c29fbcc93ac73d5a26aeda91b47bfd0db4fda1b6235332c5fa269aea70fc3865

3. request.formData(URLEncoded) : 略(内容较多)

X 参考文献

  • 大麦网
[1] 详情页 - 【南昌】林俊杰JJ20 世界巡回演唱会-南昌站
curl -X GET https://mtop.damai.cn/h5/mtop.damai.item.detail.getdetail/1.0/?jsv=2.7.2&appKey=12574478&t=1714746308416&sign=92c3ac50d64b777dce2eccee867fcb5f&api=mtop.damai.item.detail.getdetail&v=1.0&H5Request=true&type=json&timeout=10000&dataType=json&valueType=string&forceAntiCreep=true&AntiCreep=true&useH5=true&data=%7B%22itemId%22%3A%22790196638099%22%2C%22platform%22%3A%228%22%2C%22comboChannel%22%3A%222%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%7D  

Request :
    query-params:
        jsv: 2.7.2
        appKey: 12574478
        t: 1714746657327
        sign: 547c2c34820bc4f3ceb777aad344d690
        api: mtop.damai.item.detail.getdetail
        v: 1.0
        H5Request: true
        type: json
        timeout: 10000
        dataType: json
        valueType: string
        forceAntiCreep: true
        AntiCreep: true
        useH5: true
        data: {"itemId":"790196638099","platform":"8","comboChannel":"2","dmChannel":"damai@damaih5_h5"}
    
    query-params-source:
        jsv=2.7.2&appKey=12574478&t=1714746657327&sign=547c2c34820bc4f3ceb777aad344d690&api=mtop.damai.item.detail.getdetail&v=1.0&H5Request=true&type=json&timeout=10000&dataType=json&valueType=string&forceAntiCreep=true&AntiCreep=true&useH5=true&data=%7B%22itemId%22%3A%22790196638099%22%2C%22platform%22%3A%228%22%2C%22comboChannel%22%3A%222%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%7D
  • Python 类教程
  • Storm Sniffer
  • 软件简介
移动HTTP/HTTPS数据包捕获和网络调试工具。
Storm Sniffer 可让您捕获并检查 iOS 设备上的 HTTP / HTTPS 请求和响应。
无需计算机即可轻松调试应用程序的网络问题。

* 特征
数据包捕获:使用本地 VPN 捕获来自 iOS 设备的 http/HTTPS 流量。以文本形式查看http/https请求和响应,并支持HTML、JS、CSS格式预览;
重写:实时修改http/https请求和响应。包括URL重定向、自定义header、本地/远程文件mock等;
重放:通过 cron 支持执行任意 HTTP 请求;
脚本:使用本地/远程 Javascript 以获得更高的可扩展性。

* 怎么运行的
Storm Sniffer 在您的设备上创建本地 VPN,然后将所有流量转发到本地中间人服务器。只要 VPN 处于活动状态,Storm Sniffer 就可以捕获通过 Wi-Fi 或蜂窝数据的所有 HTTP / HTTPS 流量。

* 关于敏感数据
Storm Sniffer 的根证书是在您的设备中生成的自签名证书。所有 HTTP / HTTPS 请求和响应都会被捕获并存储在您的设备上,而无需涉及任何远程服务器。

* 关于订阅
订阅后,您可以解锁所有高级功能。目前,自动续订订阅分为三种:
年度 $17.99、季度 $3.99、 每月 $1.99

* 使用条款
https://sniffer.x-storm.com/terms/

* 隐私政策
https://sniffer.x-storm.com/privacy/
posted @ 2024-05-04 00:35  千千寰宇  阅读(213)  评论(0编辑  收藏  举报