【我在黑盒学py】CSGO饰品价格监控工具

0x00 前因

由于最近的股市起伏比较大(亏得比较多),发现某平台可以出租CSGO的皮肤后就把买的鸡精都卖出买了皮肤挂着租,虽然租金不算很高,但是再怎么也比鸡精稳定(白酒狗都不买)。

蚊子腿也是肉

由于资金有限,大多数皮肤都收的是酒精的,但是又想收低磨的,直接挂求购指不定给丢一个底磨的不太好,之前一直是没事就刷一刷市场看看有没有合适的可以收。今天闲着就寻思写一个监控脚本丢云函数定时运行,就不用一直盯着市场了。我设置好需要的磨损区间和心理价位,工具每半小时进行一次扫描,如果有符合条件的饰品就推送信息到微信,然后就可以直接去买。


0x01 原理简介

根据以往经历,这玩意儿不能写太细,不然发不出来。大家有兴趣可以移步52Pojie,我会在上面发布详细说明版,下面仅从思路上简单介绍一下。

我使用的租皮肤的平台和本工具监控的饰品市场不是同一个APP,大家可以自行想象,这里不便明说。

我们在电脑上打开这个饰品平台,随便打开一个饰品的购买页面,先单独请求一下这个购买页面,发现并没有我们想要的饰品数据,可以认为数据在数据包中发送到浏览器。

小龙狙~

那么就进行一个抓包,按F12打开控制台,点击网络的选项,勾选“Fetch/XHR”,进行分析。

找到这个sell开头的包

发现返回的数据有很多,高度怀疑这个包是我们想要的。

点开data前面的小按钮,发现出现了很多数据,这就是我们想要的数据,接下来对这些数据进行仔细分析。

找到你了

首先看看这个包的请求链接长啥样(已删除链接前的域名,仅分析链接的构成参数)

api/market/goods/sell_order?game=csgo&goods_id=871801&page_num=1&sort_by=default&mode=&allow_tradable_cooldown=1&_=1647677447842

从这个链接里面我们可以发现有很多的参数,先由小学英语学到的单词进行阅读并删除一些空参数,得到这样一条简化链接,篇幅限制我删掉了用于排序的参数,仅保留两项最基本的参数

api/market/goods/sell_order?game=csgo&goods_id=good_id&page_num=1&_=time

可见一个是good_id和一个time,也就是时间戳。简单观察一下不难发现相关饰品的页面链接就有这个good_id,并且我们切换不同的磨损(指从崭新出厂到酒精的这种变化,不是同阶的磨损变化)这个good_id也会跟着发生变化,所以我们监控饰品就可以通过输入这个goodid找到想要的商品,第二个参数time也比较好理解,就是当前时间的时间戳,这个可以直接生成。

首先看goods_info,不难发现这里面主要是当前请求的饰品的一些参数,但不是我们想要的,再看看别的数据

码掉的是对应的logo链接

打开items,发现是一个列表,高度怀疑这就是在售饰品的数据,点开第一个,果然是,利用小学英语学到的知识简单的读一下

码掉了商家的uid

可以发现在这里面有当前饰品的标价,并且这个表格里面返回的饰品是按照价格低到高排序的,那么当前这个价格就是该饰品在售列表里最低价,如果在前面的请求链接中设置了磨损区间等也同理。

目前为止我们就已经找到了最低售价的商品了,但是我想更进一步,直接在推送中附上该底价商品的购买页面,由于PC端没有单独的购买页面,所以在手机应用中找到一个该类型的商品,点击分享,并复制他的链接,然后我们就得到了以下链接

market/m/item_detail?classid=4578724378&instanceid=519977179&game=csgo&assetid=24916944078

这里我们发现需要的参数有点多,但是不要慌,肯定都是能够找得到的;继续看数据,在asset_info中找到了构造上面商品链接所需要的参数

有手就行

自此我们就已经完成了对该饰品网站的分析,接下来进行程序的编写。篇幅有限这里我就不贴完整代码了,简单讲解一下思路,有兴趣的同学可以下载源码自己看,一共也就不到八十行。

首先是数据储存,我这里用了一个在线数据库Bmob,这玩意儿我高三就在用了,给一些小玩具放一下需要联网的数据还是挺方便的,也不担心他跑路。

在里面新建一个表,并设置好这些列“good_id”,“name”,“except_price”,“lowest_price”

务必按照上面的列名进行设置,否则将无法运行

通过Bmob官方提供的包可以很方便的对Bmob在线数据库进行操作,每次运行获取good_id和except_price,接着利用requests模块对构造好的饰品链接发起请求并解析返回的数据,利用json模块对数据进行格式化处理,通过获取到的最低价与数据库中设置的except_price进行比较,如果低于期望价格,则推送微信消息进行提示,如下图

芜湖~

以上就是整个监控工具的思路,具体代码可以下载文末附件


0x02 云函数部署

①Bmob

首先去注册一个Bmob的账号,百度搜索“Bmob”即可,注册完成之后好像要给一块钱实明认证一下,接着进入控制台新建一个数据库,选择第一个免费的开发版即可。

记得选应用类型,否则没法创建

新建好数据库后默认只有一个“_User”表,点击“添加表”按钮,新建一个表,就叫他“Buff

吧,意为赚钱buff;注意大小写,也可以改为自己喜欢的名字,但需在代码中对应的位置进行修改。

新建好一个表后,我们给他添加对应的列,点击添加列,进行新增。

务必按照“good_id”,“name”,“except_price”,“lowest_price”的名字进行命名,顺序无所谓,可以左右拖拽调整,列类型都用默认的String型即可

设置好后,点击左侧工具栏最低侧的设置按钮,点击“应用秘钥”,复制Application ID和REST API Key,后面有用

②微信推送

我用的是Server酱,有能力的同学可以自行接入其他的推送方法。百度搜索“Server酱”即可

Server酱是一个免费的微信信息推送工具,网站里面也有很详细的使用方法,本文不再赘述。注册并设置好Server酱后,点击上方工具栏的SendKey,复制自己的SendKey,后续有用。

复制你的SendKey

③云函数

我使用的是疼讯云函数,其他的云服务商也有功能相近的服务,本工具仅保证可以在疼讯云正常使用,其他的云平台没有进行测试。

首先百度“腾讯云”,进入官网后注册一个账号,完成实明认证,接着进入控制台,点击左上角的云产品按钮,找到云函数(大概在左侧靠近中间的位置),点击进入

云函数

进入页面点击新建按钮,选择“从头开始”,设置Python版本为3.6

请选择Python3.6

往下滑动,点击文件夹上传,将文末的代码下载解压后,选择解压出来的文件夹,进行上传;将执行方法修改为如图所示,注意大小写

Main.main

点击完成等待部署,点击函数管理,进入函数代码页面,在右侧代码编辑区域中设置Server酱和Bmob的key

将SendKey替换为你的SendKey即可,Bmob的两条Key记得加上引号,形如

Bmob(efg123,abc456)

填写好参数后,设置完成之后点击代码编辑区域右上角的部署按钮,接着点击左侧的触发管理,新建一个触发器

触发方式选择定时触发,触发周期推荐设置为每半小时,过快的请求会导致饰品市场BanIP。

要验证是否设置好参数,可以先在Bmob的数据库中添加一个饰品,except_price设置高于市场均价,确保有比他低价的视频,进入云函数,点击代码编辑区域右上角的测试按钮,如果手机能够正常收到推送则说明工具已经成功配置好。


0x03 小结

本工具仅作市场价格监控及推送作用,并未要求用户登录齐饰品交易网站账号,也没用收集任何敏感信息,代码完全开源,仅做学习交流使用,请在下载后24小时内删除,谢谢!

下载链接:mrdeng.lanzouj.康姆/iSznF01p6cdi

#神来之作第十期#

如果觉得本文对你有帮助的话,请来一个三连叭~

游戏

得了焦虑症4年,我终于通关了《风之旅人》

2022-3-19 18:03:51

游戏

【STEAM每周史低折扣推荐】10款吃罐头也要薅的游戏推荐(3.19~4.01)

2022-3-20 0:02:13

搜索