开发背景
风和日丽的一天 ,旧客户推荐了新客户上门找开发,说需要开发一套今日头条鲁班电商平台的自动下单软件。
关于鲁班电商平台,大家可以自行百度了解情况,是字节跳动旗下的又称巨量引擎,也算一个新平台。商家入驻鲁班电商之后需要缴纳 2w 大元作为保证金,平台会对商家的商品进行定制推广打造,具体定制推广打造的效果当然跟商家愿意出的推广费用有关,随后商家的商品会在今日头条、抖音、西瓜等平台下推行广告推广,只要有客户下单完成交易,这样的订单交易完成后,商家会在后台看到订单来源为“鲁班广告”,商家就会被扣除广告费,2-3 元到几十上百元不等。有的人说那不通过广告进行下单自动下单那不就不用扣广告费了吗?错了,还有一种订单来源为“自主经营”,什么意思呢?就是商家可以在后台生成商品的链接,客户可以直接访问链接下单,这样订单来源就是“自主经营”,但是,但是,这样的订单是一样会被扣除广告费用的!!(想不懂的平台规定)
初步了解鲁班电商之后,就开始根据用户需求进行 coding 开发,这期间还是感谢客户的相互配合调试才有了后面的进展。花费一个星期时间,开发进行到后阶段,客户突然说不需要了!(我*)调试来这么久到最后才说不要。既然客户不需要了,那就将思路分享一下,大家一起学习!
整理了一下开发历程,才有了这一系列文章:手摸手一起研究鲁班电商平台如何自动下单不掉广告费
正文
由于客户的要求是导入指定商品链接到软件,自动自动下单,那既然现在没有指定的商品链接,那就先爬取所有的商品链接,好为后期开发做测试。
手摸手一起研究鲁班电商平台如何自动下单不掉广告费【1】—— 抓取商品链接
环境配置
涉及抓包,而且基于原来的访问方式抓包,就是从今天头条 app 里根据广告进行商品访问,就先来搭建抓包环境
对于 iPhone 用户,考虑到设置证书及各种麻烦,可以下载 Thor App 进行真机下抓包调试
对于安卓用户,当然最好是可以在电脑调试了,就选择了雷电模拟器与 mitmweb 抓包神器
具体抓包环境搭建方法各异,就不详细赘述了。
链接分析
商品链接例子:
https://haohuo.jinritemai.com/views/product/item?id=3396847870438195032&page_id=3397415566423005944
id : 3371773799245695729
page_id :3397415566423005944
先访问完整链接,得到商品的显示页面
删掉 page_id 后再一次访问得到的仍然是该商品。分析得知,很明显 id 就为商品的唯一辨识 id,而 page_id 估计是显示页面的相关 id(猜测,反正作用不大就不去过多研究)
我们目的是抓取所有的商品链接,先从正常的搜索然后进入广告抓包看起
可以看到搜索相关关键字返回相关的商品广告推广并且在 response 中返回了相关的 ID,这个 ID 看起来跟我 i 们的一开始的商品链接 ID 长得差不多,复制粘贴访问一波,果然显示为该商品的详情。
证明要抓取商品的链接可以通过搜素关键词截取返回数据获取商品 ID 再构造商品链接,至于关键词,可以其他渠道去采集,但是这样也不足以抓取全平台所有的商品呀,单单为了抓取商品链接就花费这么多的功夫,有点得不偿失的赶脚。
继续分析,偶然发现,当商品 id 填写错误的时候,返回如下页面
下面有其他商品推荐,抓包一看
提取链接:
参数分析,有 cids,classifyId,page,pageSize,addActivity,app_id,b_type_new
输入不同数值调试相关参数得出重要参数:
cids:商品分类
classifyId:商品分类下的小分类
page:页数
pageSize:每页的商品数量
addActivity:商品活动
app_id:手机设备 id,可有可无
这下就轻松了,得来全不费工夫,构造链接访问:
明显 cids=1 为数码产品相关,而且返回的页面里相关数据也够多的,至少包含我们需要的 product_id,即为商品 ID
对比返回的参数,first_id 与 second_id 即为上链接中的 cids 和 classifyId
Coding
既然接口都得到了,那就开写代码,语言随便选择,python,易语言,js 的都可以。
直接上易语言:
写好界面
直接上代码,其实也就是直接网页_访问()然后解析就好了,并写入超级列表框
.版本 2
.支持库 spec
.支持库 iext
.子程序 _按钮_爬取链接_被单击
.局部变量 cid, 文本型
.局部变量 classifyId, 文本型
.局部变量 page, 文本型
.局部变量 爬取商品 url, 文本型
.局部变量 局_结果, 字节集
.局部变量 局_返回, 文本型
.局部变量 product_Ids, 文本型, , "0"
.局部变量 product_id, 文本型
.局部变量 name, 文本型
.局部变量 names, 文本型, , "0"
.局部变量 pay_type, 文本型
.局部变量 pay_types, 文本型, , "0"
.局部变量 json, 类_json
.局部变量 i, 整数型
.局部变量 ii, 整数型
.局部变量 sameornot, 整数型
.局部变量 索引, 整数型
cid = 编辑框_cid.内容
classifyId = 编辑框_classifyId.内容
page = 编辑框_page.内容
爬取商品 url = “https://haohuo.snssdk.com/channel/ajaxGetGoods?cids=” + cid + “&classifyId=” + classifyId + “&page=” + page + “&pageSize=5&addActivity=1&app_id=15&area_type=50&area_id=1&b_type_new=0&device_id=0”
局_返回 = 编码_Utf8 到 Ansi (网页_访问 (爬取商品 url))
json.解析 (局_返回)
.计次循环首 (json.成员数 (“data.list”), i)
product_id = json.取通用属性 (“data.list[” + 到文本 (i - 1) + “].product_id”)
name = json.取通用属性 (“data.list[” + 到文本 (i - 1) + “].name”)
pay_type = json.取通用属性 (“data.list[” + 到文本 (i - 1) + “].pay_type”)
调试输出 (“爬取到商品名称为:” + name + “。到商品 ID 为:” + product_id + “。pay_type 为:” + pay_type + #换行符)
.如果真 (取数组成员数 (全局变量_product_Ids) > 8)
.计次循环首 (取数组成员数 (全局变量_product_Ids), ii)
' 调试输出 (“获取 product_ids 数组第” + 到文本 (ii) + “个:” + 全局变量_product_Ids [ii])
.如果真 (全局变量_product_Ids [ii] = product_id)
sameornot = 1
调试输出 (“发现有相同的 product_id:” + product_id + “,不再重复添加”)
返回 ()
.如果真结束
.计次循环尾 ()
.如果真结束
加入成员 (全局变量_product_Ids, product_id)
加入成员 (全局变量_pay_types, pay_type)
加入成员 (全局变量_names, name)
' 调试输出 (全局变量_product_Ids)
索引 = 超级列表框_爬取商品信息。插入表项 (, , , , , )
超级列表框_爬取商品信息。置标题 (索引, 0, 到文本 (超级列表框_爬取商品信息。取表项数 ()))
超级列表框_爬取商品信息。置标题 (索引, 1, name)
超级列表框_爬取商品信息。置标题 (索引, 2, product_id)
超级列表框_爬取商品信息。置标题 (索引, 3, pay_type)
.计次循环尾 ()
F5 运行,其实这里主要解析出 id 就足够,下图的参数 type 是商品支持的支付形式,以后会提及到。
最后
手摸手一起研究鲁班电商平台如何自动下单不掉广告费系列第一篇就到这里先
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于