大麦网回流票监控,sing参数分析

最近演唱会增多,总是抢不到票,所以想从回流票入手,做一个某麦网的演唱会回流票的监控。
最简单的方向就是从网页端入手。
在演唱会页面看到网页端不支持购买,不慌,咱只是看看有没有票不购买,直接抓包随便一个音乐节的票量接口。
经过抓包得到以下两个链接,分别是
场次接口:

https://mtop.damai.cn/h5/mtop.alibaba.damai.detail.getdetail/1.2/?jsv=2.7.2&appKey=12574478&t=1696836862157&sign=8f6f6d430ae53782832c28c208c9c246&api=mtop.alibaba.damai.detail.getdetail&v=1.2&H5Request=true&type=originaljson&timeout=10000&dataType=json&valueType=original&forceAntiCreep=true&AntiCreep=true&useH5=true&data=%7B%22itemId%22%3A739853478245%2C%22platform%22%3A%228%22%2C%22comboChannel%22%3A%222%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%7D

座次接口:

https://mtop.damai.cn/h5/mtop.alibaba.detail.subpage.getdetail/2.0/?jsv=2.7.2&appKey=12574478&t=1696837077937&sign=2000a8d025a2b8ff407be20a671b5e48&api=mtop.alibaba.detail.subpage.getdetail&v=2.0&H5Request=true&type=originaljson&timeout=10000&dataType=json&valueType=original&forceAntiCreep=true&AntiCreep=true&useH5=true&data=%7B%22itemId%22%3A%22739853478245%22%2C%22bizCode%22%3A%22ali.china.damai%22%2C%22scenario%22%3A%22itemsku%22%2C%22exParams%22%3A%22%7B%5C%22dataType%5C%22%3A2%2C%5C%22dataId%5C%22%3A%5C%22211839138%5C%22%2C%5C%22privilegeActId%5C%22%3A%5C%22%5C%22%7D%22%2C%22platform%22%3A%228%22%2C%22comboChannel%22%3A%222%22%2C%22dmChannel%22%3A%22damai%40damaih5_h5%22%7D

经过验证headers是统一的不会变也没有加密参数,cookie也是一致的但有未知参数**_m_h5_tk**、_m_h5_tk_enc


而这两个接口里的参数大同小异,分别如下
场次接口:


座次接口:


可以看到其中关键参数就是tsigndata,其他参数都是固定的。
其中data显而易见,场次接口的itemId就是这个演出的id,其他参数固定;座次接口的itemId是演出id,dataId就是当前场次的id(例如10.21场),其他参数固定。
接着我们可以打断点看一下这个t和sign是如何生成的。F12调出控制台,下一个xhr断点,可以直接打到"sign"上,也可以打到对应链接上。


刷新一下页面触发断点,找到对应的请求发起js文件。


在这个文件里简单调试下很容易就能找到加密函数


可以看到这个函数就是将tokencsdata,以&进行分隔拼接,然后再进行加密得到sign。
其中token暂时未知,c就是url参数中的t时间戳,s就是url参数中的appKey固定值,data就是url参数中的data的json字符串,简单拼接就行。
所以现在就剩token未知,在函数上打个断点看看:


发现这个token很眼熟,回头看看我们请求所需的cookie,这个token就是cookie中**_m_h5_tk的前半部分,直接拿过来用就可以。
我们拿相同的参数去网上的在线md5加密一下,发现加密结果一致,即这个加密函数就是简单的md5加密。
现在所需要知道的就是
_m_h5_tk是如何产生的,直接回到首页,删除cookie缓存重新抓包,找到set-cookie的那一条请求就行。


可以发现只要在token失效之后,随便发起一条请求携带过期的sign,就会返回新的_m_h5_tk**,这下大功告成了。
最后再加上VX推送提示,或者其他通知app接口,就完成了回流监控。

### 大麦网监控 Java 实现方法 为了实现大麦网监控功能,可以采用定时任务配合HTTP请求的方式获取网页上的剩余数信息。下面介绍一种基于Java的技术方案。 #### 使用HttpURLConnection发送GET请求 通过`java.net.HttpURLConnection`类来发起针对目标页面的HTTP GET请求,从而抓取含有余数量的数据片段: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class TicketChecker { private final String targetUrl = "https://www.damai.cn/"; public String checkTicketAvailability() throws Exception { URL url = new URL(targetUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null){ response.append(line).append("\n"); } reader.close(); return parseResponseForTickets(response.toString()); } private String parseResponseForTickets(String htmlContent){ // 解析HTML内容并提取所需的信息 // 这里假设已经知道如何定位到具体的余数目位置 // 返回解析后的字符串表示当前可购买的数量或其他状态描述 // 此处仅为示意代码,实际应用需根据具体网站结构编写正则表达式或使用DOM解析库如Jsoup return "TODO: Implement parsing logic"; } } ``` 此部分实现了最基本的网络通信逻辑[^1]。 #### 定时调度器设置 利用`ScheduledExecutorService`接口安排周期性的任务执行计划,在固定的时间间隔内重复查询最新的售情况: ```java import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class SchedulerExample { public static void main(String[] args) { ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); Runnable task = () -> { try{ System.out.println("Checking ticket availability..."); TicketChecker checker = new TicketChecker(); String result = checker.checkTicketAvailability(); System.out.printf("Result of checking:%s%n",result); }catch(Exception e){ e.printStackTrace(); } }; long initialDelayInSeconds = 0L; long periodInSeconds = 60 * 5; // 每隔五分钟检查一次 scheduler.scheduleAtFixedRate(task,initialDelayInSeconds ,periodInSeconds , TimeUnit.SECONDS ); } } ``` 上述程序会每隔五分钟左右向指定URL发出请求,并打印出返回的结果。 请注意这只是一个简单的框架示例,真实环境中还需要考虑更多因素比如反爬虫机制、登录验证以及更复杂的页面动态加载等问题。另外建议使用成熟的第三方API服务或者官方提供的SDK来进行此类操作以提高效率和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值