700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 外卖返利系统/美团/饿了么外卖CPS联盟返利公众号小程序核心源码

外卖返利系统/美团/饿了么外卖CPS联盟返利公众号小程序核心源码

时间:2023-10-29 02:44:34

相关推荐

外卖返利系统/美团/饿了么外卖CPS联盟返利公众号小程序核心源码

我们都知道,目前两家巨头饿了么和美团点外卖都可以获得返现,其中饿了么是返利6%,美团是返利3-5%,具体要根据活动来。

也就是说按正常一个人用户点餐,你可以获得每笔外卖的CPS返利佣金,而且外卖的用户粘性极高,已经成了很多淘客的首选,不巧前段时间有客户找我分析开发了一个项目,主要是公众号和小程序(后期还说要开发APP)实现用户一次注册同步关联的跟单返利。

从核心功能方面来说,主要还是实现自动跟单返利,获得CPS交易佣金、另一个是用户角色等级的实现,例如 普通用户、团长用户和联合运营用户角色,每个角色都代表了不同的等级,而要升级这些等级就必须要完成自购 或 自己团队的订单量,作为考核升级,每个升级的用户角色实现就是获得了更高的佣金分成比例和真正裂变赚钱的机会,行业里面有的称为代理商,这样的公众号和小程序渠道,在微信生态下是非常好的裂变,可以迅速获得用户群做社群运营。

外卖CPS小程序源码分享

外卖券外卖省省外卖探探美团饿了么外卖联盟优惠券小程序系统软件开发源码 美团/饿了么外卖CPS联盟返利公众号小程序裂变核心源码

今天和大家分享下外卖CPS项目,这个其实和做淘客有点类似,淘客是别人通过你的推广购物产生佣金,同理外卖CPS也就是别人通过你的推广点了外卖产生佣金,和做淘客一个原理

饿了么、美团优惠开发(外卖cps,三级裂变源码)

源码或搭建

截图

功能列表

特价电影票

饿了么外卖(3个红包)

美团外卖

美团优选(1分钱买菜)

购物返利(淘宝,拼多多,京东)

话费优惠充值(92折,慢充)

火车票优惠

滴滴打车优惠

小程序广告收益(流量主)

公众号绑定

更多功能…

作者联系方式

交流交流感情也好呀~

代搭建,源码都可以出,好谈~

转介绍,代理,都行,作者不会亏待你~

步骤

下载以上源代码到本地

http://mtw.so/6wav8W

修改为你自己的微信小程序,打开 /dist/pages/ele/index.js

微信小程序->开发管理->开发设置 添加 request的域名: 地址:

https://mp./wxamp/devprofile/get_profile?token=271531762&lang=zh_CN

小程序管理后台配置你的链接

后台地址: 进去之后选择小程序管理->无裂变小程序管理->添加小程序->填入你自己的链接

微信开发者工具,导入项目,提交审核

没用的代码, 请忽略

一、写在开头

1、抓取像抖音这样的app需要绕过证书封锁,也就是pinning ssl,安卓7以上的系统需要采用edxposed+trustmealready+msgisk,当然为了实现这一目标,需要将手机root,不root手机的话安装visualxposed+trustmealready也可以,但是不太好用,博主在实战中使用的是android 10的版本,采用了root手机+edxposed+trustmealready+msgisk的方式,当然大家使用真机的话,不建议大家自己root手机,现在手机获取root权限不容易,博主是在某宝上root的手机和安装edxposed框架;

2、注意,抖音版本不要使用新版本,尽量使用旧一点的版本,否则就算安装了上述的框架依然会出现网络错误的页面,现在最新版本是16.9.1,博主测试用的是16.0.1的版本,可绕过pinning ssl,另外比较旧的10.7.0也测试过,具有直播功能,能绕过pinning ssl,不过版本太旧了,已经不允许用户登录了;

3、会使用到的工具:fiddler(老版本,最近出了个新版叫fiddler everywhere不好用,没法解决乱码的问题,还收费)、appium、mitmproxy、sdk(adb用于操作安卓底层、uiautomatorviewer找出控件信息、aapt找到app的参数)

二、appium+mitmproxy

1、appium用于开启服务和定位app控件节点

2、使用appiunm来控制一个app,下面箭头所指的几个参数是需要设置的,noReset表示是否保留操作数据,设不设置看个人需求

这些参数中platformName,platformVersion比较容易填写,直接查看手机信息即可,deviceName需要使用adb工具链接设备通过命令adb devices之后才能看到,appPackage和appActivity的找法稍微复杂一些,一般使用aapt来找命令为aapt dump badging 文件路径+文件名,(当然也可以通过命令aapt dump badging 文件路径+文件名 | find "launchable-activity"这类直接筛选的命令来找,在linux下面不能用find,用grep)不过,通过aapt这个方法不一定两个都能找到,在实战中抖音的appActivity通过aapt是找不到的,需要通过adb来找,输入进入adb shell 后使用命令logcat | grep cmp=,回车之后打开要测试的软件,会有启动的日志,从日志里面来找,具体细节就不需过多阐述了,其他博主应该会说得更明白一些。

(注:这不是一个详细教程,只是一些操作笔记,为有需要的同僚指个方向,对应的各个点其他博主应该有详细的介绍,东西写得太细感觉有写冗杂,体现思路就ok了)

正确书写以上信息,开启appium服务就可以通过python脚本自动化控制app了。

2、mitmproxy(mitmproxy、mitmdump、mitmweb)用于和python结合实现爬虫逻辑,mitmproxy也是一个抓包工具,主要在linux下使用,我们主要使用mitmdump这个模块,通过命令mitmdump -p 代理端口号 -s python文件名来加载python文件并运行在指定端口号上,实现对request和response的监听和抓取,运行app我们就可以截获到请求和响应的信息,很方便,该模块主要有两个函数,request(flow)和response(flow),具体用法大家可以自行搜索,下面给个代码样例

from mitmproxy import ctx

def request(flow):

# print(flow.request.headers)

# ctx.log.info(str(flow.request.headers)) # 请求头

# ctx.log.warn(str(flow.request.method)) # 请求方法

# ctx.log.error(str(flow.request.host)) # 请求主机

ctx.log.info(str(flow.request.url)) # 请求链接

# ctx.log.info(str(flow.request.path))# 输出请求路径

def response(flow):

ctx.log.error(str(flow.response.status_code)) # 输出相应状态

ctx.log.warn(str(flow.response.text))

# log、warn、error会标注不同的颜色

1

2

3

4

5

6

7

8

9

10

11

12

13

14

三、出现的问题和解决方案

1、关于fiddler抓到的请求链接在浏览器中打开得不到数据的问题的解决办法:

像这种情况使用requests.get()来进行请求的时候要带上headers,这个headers在fiddler中来找:

需要将其改写为字典的形式,去掉无关空格,不去掉无关的空格请求会报错的,特别注意冒号(:)后面经常会自己生成空格,要去掉;

2、在请求的参数中,有些是参数是需要被注释掉的,比如cookie,时间戳等,需要具体情况具体分析测试,不同的请求需要的请求头是不尽相同的;

3、关于动态节点比如直播弹幕、在线人数等,这些动态节点我们可以在抓包工具中抓到其请求链接,但是我们在浏览器中打开却是一片空白,加上请求头使用requests去访问也无用,这是什么问题导致的呢?

答案是:因为你抓取的是动态的节点,这种信息是要通过界面加载之后才能出现的,在web端我们采用的是selenium来模拟人的动作操作浏览器来加载js代码从而使得我们的目标节点被加载出来,简单的重复访问链接是无效的,那么在app中我们就要使用appium来控制app的点击和滑动,从app的中找出节点的属性值从而达到获取信息的目的,appium由selenium封装而来,操作和selenium非常相似;

4、有时候明明已经开启了fiddler的服务,但是手机连上网之后就是没法上网,这个时候考虑重启fiddler、将手机的wifi代理取消连接正常后再加上代理,多试几次,这玩意儿就没怎么让人顺心过,但是使用mitmproxy就好多了,开启mitmproxy的服务,手机链接代理,在mitmproxy的界面回车一下就能在屏幕上看到mitmproxy在抓取手机的请求了,体验还不错;

5、关于使用appium寻找APP找元素节点的问题,尽量不要使用tap方法,同样的位置会有很多元素的重叠,当界面稍微出现差错就会使得整个程序对界面的操作陷入混乱之中,使用id等唯一定位一个节点的方法可以有效避免这种情况的发生

6、appium控制手机自动化的过程中有时会出现山退的情况,回观自己的控制逻辑毫无问题,参照其他coder的方法,清除了一下数据也没效果,估计和手机硬件或者软件本身有关,也有的生产商故意为之,目前未找到有效的解决办法,暂时只能尽量优化已有的控制逻辑;

7、在抓取节点信息的时候,已经抓取到某个节点,要通过get_attribute(“name”)获取其context-desc的属性值,但是无法获取到,多次尝试无果,后搜到get_attribute(“contentDescription”)也可以得到属性值,尝试了一下果然获取到了,感觉这个appium总体上还是没有selenium好使;

8、通过appium我们看到里面的很多节点都有同一个id,但是我们滑动节点的页面将其加载出来之后通过get_elements_by_id()去获取的时候却之能够得到部分数据,不知道又是啥毛病,为了解决这个问题我采用的方法是每将页面刷新一次就通过get_elements_by_id()获取一次内容,将所有页面刷新完毕就能获取到所有的内容,但是难免会有重复的元素被提取出来,最后去一下重就可以了;

一、写在开头

1、抓取像抖音这样的app需要绕过证书封锁,也就是pinning ssl,安卓7以上的系统需要采用edxposed+trustmealready+msgisk,当然为了实现这一目标,需要将手机root,不root手机的话安装visualxposed+trustmealready也可以,但是不太好用,博主在实战中使用的是android 10的版本,采用了root手机+edxposed+trustmealready+msgisk的方式,当然大家使用真机的话,不建议大家自己root手机,现在手机获取root权限不容易,博主是在某宝上root的手机和安装edxposed框架;

2、注意,抖音版本不要使用新版本,尽量使用旧一点的版本,否则就算安装了上述的框架依然会出现网络错误的页面,现在最新版本是16.9.1,博主测试用的是16.0.1的版本,可绕过pinning ssl,另外比较旧的10.7.0也测试过,具有直播功能,能绕过pinning ssl,不过版本太旧了,已经不允许用户登录了;

3、会使用到的工具:fiddler(老版本,最近出了个新版叫fiddler everywhere不好用,没法解决乱码的问题,还收费)、appium、mitmproxy、sdk(adb用于操作安卓底层、uiautomatorviewer找出控件信息、aapt找到app的参数)

二、appium+mitmproxy

1、appium用于开启服务和定位app控件节点

2、使用appiunm来控制一个app,下面箭头所指的几个参数是需要设置的,noReset表示是否保留操作数据,设不设置看个人需求

这些参数中platformName,platformVersion比较容易填写,直接查看手机信息即可,deviceName需要使用adb工具链接设备通过命令adb devices之后才能看到,appPackage和appActivity的找法稍微复杂一些,一般使用aapt来找命令为aapt dump badging 文件路径+文件名,(当然也可以通过命令aapt dump badging 文件路径+文件名 | find "launchable-activity"这类直接筛选的命令来找,在linux下面不能用find,用grep)不过,通过aapt这个方法不一定两个都能找到,在实战中抖音的appActivity通过aapt是找不到的,需要通过adb来找,输入进入adb shell 后使用命令logcat | grep cmp=,回车之后打开要测试的软件,会有启动的日志,从日志里面来找,具体细节就不需过多阐述了,其他博主应该会说得更明白一些。

(注:这不是一个详细教程,只是一些操作笔记,为有需要的同僚指个方向,对应的各个点其他博主应该有详细的介绍,东西写得太细感觉有写冗杂,体现思路就ok了)

正确书写以上信息,开启appium服务就可以通过python脚本自动化控制app了。

2、mitmproxy(mitmproxy、mitmdump、mitmweb)用于和python结合实现爬虫逻辑,mitmproxy也是一个抓包工具,主要在linux下使用,我们主要使用mitmdump这个模块,通过命令mitmdump -p 代理端口号 -s python文件名来加载python文件并运行在指定端口号上,实现对request和response的监听和抓取,运行app我们就可以截获到请求和响应的信息,很方便,该模块主要有两个函数,request(flow)和response(flow),具体用法大家可以自行搜索,下面给个代码样例

from mitmproxy import ctx

def request(flow):

# print(flow.request.headers)

# ctx.log.info(str(flow.request.headers)) # 请求头

# ctx.log.warn(str(flow.request.method)) # 请求方法

# ctx.log.error(str(flow.request.host)) # 请求主机

ctx.log.info(str(flow.request.url)) # 请求链接

# ctx.log.info(str(flow.request.path))# 输出请求路径

def response(flow):

ctx.log.error(str(flow.response.status_code)) # 输出相应状态

ctx.log.warn(str(flow.response.text))

# log、warn、error会标注不同的颜色

1

2

3

4

5

6

7

8

9

10

11

12

13

14

三、出现的问题和解决方案

1、关于fiddler抓到的请求链接在浏览器中打开得不到数据的问题的解决办法:

像这种情况使用requests.get()来进行请求的时候要带上headers,这个headers在fiddler中来找:

需要将其改写为字典的形式,去掉无关空格,不去掉无关的空格请求会报错的,特别注意冒号(:)后面经常会自己生成空格,要去掉;

2、在请求的参数中,有些是参数是需要被注释掉的,比如cookie,时间戳等,需要具体情况具体分析测试,不同的请求需要的请求头是不尽相同的;

3、关于动态节点比如直播弹幕、在线人数等,这些动态节点我们可以在抓包工具中抓到其请求链接,但是我们在浏览器中打开却是一片空白,加上请求头使用requests去访问也无用,这是什么问题导致的呢?

答案是:因为你抓取的是动态的节点,这种信息是要通过界面加载之后才能出现的,在web端我们采用的是selenium来模拟人的动作操作浏览器来加载js代码从而使得我们的目标节点被加载出来,简单的重复访问链接是无效的,那么在app中我们就要使用appium来控制app的点击和滑动,从app的中找出节点的属性值从而达到获取信息的目的,appium由selenium封装而来,操作和selenium非常相似;

4、有时候明明已经开启了fiddler的服务,但是手机连上网之后就是没法上网,这个时候考虑重启fiddler、将手机的wifi代理取消连接正常后再加上代理,多试几次,这玩意儿就没怎么让人顺心过,但是使用mitmproxy就好多了,开启mitmproxy的服务,手机链接代理,在mitmproxy的界面回车一下就能在屏幕上看到mitmproxy在抓取手机的请求了,体验还不错;

5、关于使用appium寻找APP找元素节点的问题,尽量不要使用tap方法,同样的位置会有很多元素的重叠,当界面稍微出现差错就会使得整个程序对界面的操作陷入混乱之中,使用id等唯一定位一个节点的方法可以有效避免这种情况的发生

6、appium控制手机自动化的过程中有时会出现山退的情况,回观自己的控制逻辑毫无问题,参照其他coder的方法,清除了一下数据也没效果,估计和手机硬件或者软件本身有关,也有的生产商故意为之,目前未找到有效的解决办法,暂时只能尽量优化已有的控制逻辑;

7、在抓取节点信息的时候,已经抓取到某个节点,要通过get_attribute(“name”)获取其context-desc的属性值,但是无法获取到,多次尝试无果,后搜到get_attribute(“contentDescription”)也可以得到属性值,尝试了一下果然获取到了,感觉这个appium总体上还是没有selenium好使;

8、通过appium我们看到里面的很多节点都有同一个id,但是我们滑动节点的页面将其加载出来之后通过get_elements_by_id()去获取的时候却之能够得到部分数据,不知道又是啥毛病,为了解决这个问题我采用的方法是每将页面刷新一次就通过get_elements_by_id()获取一次内容,将所有页面刷新完毕就能获取到所有的内容,但是难免会有重复的元素被提取出来,最后去一下重就可以了;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。