哔哩哔哩:https://www.bilibili.com/video/BV1hAfqYkEyj/
HTTP基础
1、HTTP概念介绍
- HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)
- 基于TCP/IP通信协议来传递数据
- 工作原理
软件:模拟客户端发送数据到服务器
脚本:充当发送数据的客户端
- HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
2、HTTP消息结构
- HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
单词:request response
- 客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
- 请求行(request line)
- 请求头部(header)
- 空行
- 请求数据
四个部分组成
GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
Cookie: BIDUPSID=0295BBFFC7434D5A2B537B3E1DCF0A73; PSTM=1585981911; BAIDUID=0295BBFFC7434D5A80FB7C4D234261B1:SL=0:NR=10:FG=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; sug=0; sugstore=0; ORIGIN=0; bdime=0; BD_UPN=12314753; UM_distinctid=172aceefd32434-07315fe1f03cd6-f7d123e-1fa400-172aceefd33730; CNZZDATA1272960286=518833385-1592035240-%7C1592178137; COOKIE_SESSION=54210_0_9_9_51_3_1_0_9_3_3350_3_54150_0_2_0_1592178411_0_1592178409%7C9%230_0_1592178409%7C1; BD_HOME=1; H_PS_PSSID=1450_31326_21109_32046_31322_30823_26350_22160; Hm_lvt_addc40d255fca71b9b06a07c2397b42a=1592127867,1592128879,1592178401,1592179436; delPer=0; BD_CK_SAM=1; PSINO=1; H_PS_645EC=8313RYyW2H4EzaORfAa0U8bwmk5VuFvOkp%2BSZNTqMg%2BMBDSuNOqMkjlvLy4; BDSVRTM=0; Hm_lpvt_addc40d255fca71b9b06a07c2397b42a=1592179672
- 服务器响应信息
HTTP响应也由四个部分组成,分别是:
- 响应行
- 消息报头
- 空行
- 响应正文
HTTP/1.1 200 OK
Bdpagetype: 1
Bdqid: 0xb867f32700718b16
Cache-Control: private
Connection: keep-alive
Content-Type: text/html;charset=utf-8
Date: Mon, 15 Jun 2020 00:10:50 GMT
Expires: Mon, 15 Jun 2020 00:10:48 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1450_31326_21109_32046_31322_30823_26350_22160; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1592179850063549517813287856574416653078
X-Ua-Compatible: IE=Edge,chrome=1
Content-Length: 248402
<!DOCTYPE html><!--STATUS OK-->
.....
3、HTTP请求方法
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |

4、HTTP报文详解

5、HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
- 200 – 请求成功
- 301 – 资源(网页等)被永久转移到其它URL
- 404 – 请求的资源(网页等)不存在
- 500 – 内部服务器错误
– API接口
1、API接口简介
- 网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。
- API与用户的通信协议,总是使用HTTPs协议
2、API接口设计
1、域名
应该尽量将API部署在专用域名之下。
https://api.example.com
https://example.org/api/
2、版本号
应该将API的版本号放入URL。
https://api.example.com/v2/
3、路径
路径又称”终点”(endpoint),表示API的具体网址。
在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。
举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。
- https://api.example.com/v1/zoos
- https://api.example.com/v1/animals
- https://api.example.com/v1/employees
4、HTTP请求方法
常用的HTTP动词有下面五个(括号里是对应的SQL命令)。
- GET(SELECT):从服务器取出资源(一项或多项)。
- POST(CREATE):在服务器新建一个资源。
- PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
- PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
- DELETE(DELETE):从服务器删除资源。
还有两个不常用的HTTP动词。
- HEAD:获取资源的元数据。
- OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
下面是一些例子。
- GET /zoos:列出所有动物园
- POST /zoos:新建一个动物园
- GET /zoos/ID:获取某个指定动物园的信息
- PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
- PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
- DELETE /zoos/ID:删除某个动物园
- GET /zoos/ID/animals:列出某个指定动物园的所有动物
- DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
5、过滤信息
如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。
下面是一些常见的参数。
- ?limit=10:指定返回记录的数量
- ?offset=10:指定返回记录的开始位置。
- ?page=2&per_page=100:指定第几页,以及每页的记录数。
- ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
- ?animal_type_id=1:指定筛选条件
参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。
6、状态码
服务器向用户返回的状态码和提示信息,常见的有以下一些
- 200 OK – [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
- 201 CREATED – [POST/PUT/PATCH]:用户新建或修改数据成功。
- 202 Accepted – [*]:表示一个请求已经进入后台排队(异步任务)
- 204 NO CONTENT – [DELETE]:用户删除数据成功。
- 400 INVALID REQUEST – [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
- 401 Unauthorized – [*]:表示用户没有权限(令牌、用户名、密码错误)。
- 403 Forbidden – [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
- 404 NOT FOUND – [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
- 406 Not Acceptable – [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
- 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
- 422 Unprocesable entity – [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
- 500 INTERNAL SERVER ERROR – [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
7、错误处理
如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。
{
error: "Invalid API key"
}
– Fiddler抓包工具
1、fiddler简介
Fiddler是一个http调试代理,它能够记录所有的你电脑和互联网之间的http通讯
Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。
Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。
Fiddler 包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,他非常灵活性,可以支持众多的http调试任务。
Fiddler 是用C#写出来的。
2、fiddler安装设置
3、fiddler抓包:http请求
4、fiddler抓包:https
- from all processes:抓取所有进程的流量
- from browsers only:只抓取浏览器的流量
- from non-browsers only:不抓取浏览器的流量
- from remote clients only:抓取远程的客户端,当需要抓取的是手机端的流量,就需要用到这个
- Allow remote computers to connect 是允许远程的客户端进行连接
5、fiddler抓包:APP
Autojs协议基础
1、http.get请求详解
http.get(url[, options, callback])
url
{string} 请求的URL地址,需要以”http://”或”https://”开头。如果url没有以”http://”开头,则默认为”http://”。- 选项options可以包含以下属性:
headers
{Object} 键值对形式的HTTP头部信息。有关HTTP头部信息,参见菜鸟教程:HTTP响应头信息。method
{string} HTTP请求方法。包括”GET”, “POST”, “PUT”, “DELET”, “PATCH”。contentType
{string} HTTP头部信息中的”Content-Type”, 表示HTTP请求的内容类型。例如”text/plain”, “application/json”。更多信息参见菜鸟教程:HTTP contentType。body
{string} | {Array} | {Function} HTTP请求的内容。可以是一个字符串,也可以是一个字节数组;或者是一个以BufferedSink为参数的函数。
callback
{Function} 回调函数,可选,其参数是一个Response对象。如果不加回调函数,则该请求将阻塞、同步地执行。
对地址url进行一次HTTP GET 请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见Response)。
最简单GET请求如下:
console.show();
var r = http.get("www.baidu.com");
log("code = " + r.statusCode);
log("html = " + r.body.string());
采用回调形式的GET请求如下:
console.show();
http.get("www.baidu.com", {}, function(res, err){
if(err){
console.error(err);
return;
}
log("code = " + res.statusCode);
log("html = " + res.body.string());
});
如果要增加HTTP头部信息,则在options参数中添加,例如:
console.show();
var r = http.get("www.baidu.com", {
headers: {
'Accept-Language': 'zh-cn,zh;q=0.5',
'User-Agent': 'Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11'
}
});
log("code = " + r.statusCode);
log("html = " + r.body.string());
一个请求天气并解析返回的天气JSON结果的例子如下:
var city = "广州";
var res = http.get("http://www.sojson.com/open/api/weather/json.shtml?city=" + city);
if(res.statusCode != 200){
toast("请求失败: " + res.statusCode + " " + res.statusMessage);
}else{
var weather = res.body.json();
log(weather);
toast(util.format("温度: %s 湿度: %s 空气质量: %s", weather.data.wendu,
weather.data.shidu, weather.quality));
}
2、http.post请求详解
http.post(url, data[, options, callback])
url
{string} 请求的URL地址,需要以”http://”或”https://”开头。如果url没有以”http://”开头,则默认为”http://”。data
{string} | {Object} POST数据。options
{Object} 请求选项。callback
{Function} 回调,其参数是一个Response对象。如果不加回调参数,则该请求将阻塞、同步地执行。
对地址url进行一次HTTP POST 请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见Response)。
其中POST数据可以是字符串或键值对。具体含义取决于options.contentType的值。默认为”application/x-www-form-urlencoded”(表单提交), 这种方式是JQuery的ajax函数的默认方式。
一个模拟表单提交登录淘宝的例子如下:
var url = "https://login.taobao.com/member/login.jhtml";
var username = "你的用户名";
var password = "你的密码";
var res = http.post(url, {
"TPL_username": username,
"TPL_password": password
});
var html = res.body.string();
if(html.contains("页面跳转中")){
toast("登录成功");
}else{
toast("登录失败");
}
3、http.postJson请求详解
http.postJson(url, data[,options, callback])
url
{string} 请求的URL地址,需要以”http://”或”https://”开头。如果url没有以”http://”开头,则默认为”http://”。data
{Object} POST数据。options
{Object} 请求选项。callback
{Function} 回调,其参数是一个Response对象。如果不加回调参数,则该请求将阻塞、同步地执行。
以JSON格式向目标Url发起POST请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见Response)。
JSON格式指的是,将会调用JSON.stringify()
把data对象转换为JSON字符串,并在HTTP头部信息中把”Content-Type”属性置为”application/json”。这种方式是AngularJS的ajax函数的默认方式。
一个调用图灵机器人接口的例子如下:
var url = "http://www.tuling123.com/openapi/api";
r = http.postJson(url, {
key: "65458a5df537443b89b31f1c03202a80",
info: "你好啊",
userid: "1",
});
toastLog(r.body.string());
4、http.postMultipart请求详解
http.postMultipart(url, files[, options, callback])
url
{string} 请求的URL地址,需要以”http://”或”https://”开头。如果url没有以”http://”开头,则默认为”http://”。files
{Object} POST数据。options
{Object} 请求选项。callback
{Function} 回调,其参数是一个Response
对象。如果不加回调参数,则该请求将阻塞、同步地执行。
向目标地址发起类型为multipart/form-data的请求(通常用于文件上传等), 其中files参数是{name1: value1, name2: value2, …}的键值对,value的格式可以是以下几种情况:
string
- 文件类型,即open()返回的类型
- [fileName, filePath]
- [fileName, mimeType, filePath]
其中1属于非文件参数,2、3、4为文件参数。举个例子,最简单的文件上传的请求为:
var res = http.postMultipart(url, {
file: open("/sdcard/1.txt")
});
log(res.body.string());
如果使用格式2,则代码为
var res = http.postMultipart(url, {
file: ["1.txt", "/sdcard/1.txt"]
});
log(res.body.string());
如果使用格式3,则代码为
var res = http.postMultipart(url, {
file: ["1.txt", "text/plain", "/sdcard/1.txt"]
});
log(res.body.string());
如果使用格式2的同时要附带非文件参数”appId=abcdefghijk”,则为:
var res = http.postMultipart(url, {
appId: "adcdefghijk",
file: open("/sdcard/1.txt")
});
log(res.body.string());
5、Response对象详解
Response.statusCode
- {number}
当前响应的HTTP状态码。例如200(OK), 404(Not Found)等。
有关HTTP状态码的信息
Response.statusMessage
- {string}
当前响应的HTTP状态信息。例如”OK”, “Bad Request”, “Forbidden”。
有关HTTP状态码的信息
例子:
var res = http.get("www.baidu.com");
if(res.statusCode >= 200 && res.statusCode < 300){
toast("页面获取成功!");
}else if(res.statusCode == 404){
toast("页面没找到哦...");
}else{
toast("错误: " + res.statusCode + " " + res.statusMessage);
}
Response.headers
- {Object}
当前响应的HTTP头部信息。该对象的键是响应头名称,值是各自的响应头值。 所有响应头名称都是小写的(吗)。
有关HTTP头部信息
例子:
console.show();
var res = http.get("www.qq.com");
console.log("HTTP Headers:")
for(var headerName in res.headers){
console.log("%s: %s", headerName, res.headers[headerName]);
}
Response.body
- {Object}
当前响应的内容。他有以下属性和函数:
- bytes() {Array} 以字节数组形式返回响应内容
- string() {string} 以字符串形式返回响应内容
- json() {Object} 把响应内容作为JSON格式的数据并调用JSON.parse,返回解析后的对象
- contentType {string} 当前响应的内容类型
Response.request
- {Request} 当前响应所对应的请求。参见Request。
Response.url
- {number} 当前响应所对应的请求URL。
Response.method
- {string} 当前响应所对应的HTTP请求的方法。例如”GET”, “POST”, “PUT”等。
– 攒攒协议开发教程
1、攒攒安卓协议登录
POST http://zcore.zqzan.com/app/account/raw/login HTTP/1.1
Token:
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAALf8VmkAQAEAG4HTnXd0gMJUmJDA
Content-Length: 38
username=13180569395&loginpw=aaattt123
2、攒攒网页协议登录
POST http://zcore.zqzan.com/app/account/raw/login HTTP/1.1
Host: zcore.zqzan.com
Connection: keep-alive
Content-Length: 38
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
Token:
Content-Type: application/x-www-form-urlencoded
Accept: */*
Origin: http://app.zqzan.com
Referer: http://app.zqzan.com/pages/login/login
Accept-Encoding: gzip, deflate
Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
username=13180569395&loginpw=aaattt123
3、攒攒协议:抖音首次签到任务
POST http://zcore.zqzan.com/app/douyin/mine/my/info HTTP/1.1
Token: c5e57ad2-7a90-4ee6-8b74-17c81b864646
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAADUwB3uXLgsAG4HTncRTKMZ/rg3O
Content-Length: 0
任务状态
//签到任务未完成
{"code":0,"msg":"敕何敕啕","data":{"sign_douyin_sample":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_sign.jpg@!fwidth","dyin_status":0}}
//开始考试
{"code":0,"msg":"操作成功","data":{"exam_douyin":10,"dyin_status":3}}
//首次签到提交完成
{"code":0,"msg":"操作成功","data":{"sign_douyin_sample":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_sign.jpg@!fwidth","dyin_status":2}}
//开始援助
{"code":0,"msg":"操作成功","data":{"exam_dycomment":3,"access":63,"wallet":80,"exam_douyin":13,"dyin_dataid":"64129762480","dyin_status":3,"today_count":0,"is_signed":true,"recent_count":"-"}}
POST http://zcore.zqzan.com/app/oss/sign_img HTTP/1.1
Token: c5e57ad2-7a90-4ee6-8b74-17c81b864646
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAADUwB3uXLgsAG4HTncRTKMZ/rg3O
Content-Length: 0
{"code":0,"msg":"敕何敕啕","data":{"accessid":"LTAI4FwVNMW9yHsSHKW5mW3T","signature":"+U75yMlruGmpeLrw6xMNKRc6Mrs=","prefix":"1268807849981091841_","expire":"1592374377629","host":"https://yun.zqzan.com","format":"@!fwidth","dir":"sign/06_17/","policy":"eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0xN1QwNjoxNjowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5Iiwic2lnbi8wNl8xNy8iXV19"}}
4、抖音首次签到任务提交截图
https://v.douyin.com/JRMQTWA/
POST https://yun.zqzan.com/ HTTP/1.1
Connection: Keep-Alive
Charset: UTF-8
Content-Type: multipart/form-data; boundary=------l4No7Q
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
Host: yun.zqzan.com
Accept-Encoding: gzip
Content-Length: 84117
--------l4No7Q
Content-Disposition: form-data; name="key"
sign/06_17//1268807849981091841_159238480510682.png
--------l4No7Q
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0xN1QwOToyMjowMC4wMjNaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5Iiwic2lnbi8wNl8xNy8iXV19
--------l4No7Q
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAI4FwVNMW9yHsSHKW5mW3T
--------l4No7Q
Content-Disposition: form-data; name="signature"
ho5m8OOgJQdlXeHCCTYFjBlCOvA=
--------l4No7Q
Content-Disposition: form-data; name="success_action_status"
200
--------l4No7Q
Content-Disposition: form-data; name="file"; filename="1592384804817.ss.android.ugc.aweme.jpg"
Content-Type: image/jpeg
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Wed, 17 Jun 2020 09:06:47 GMT
Content-Length: 0
Connection: keep-alive
x-oss-request-id: 5EE9DD278DA7CA3136DBF2CE
ETag: "6BE01D0F07979521C28482400AB68CF4"
x-oss-hash-crc64ecma: 1869845050989223007
Content-MD5: a+AdDweXlSHChIJACraM9A==
x-oss-server-time: 19
5、完成抖音首次签到任务
POST http://zcore.zqzan.com/app/douyin/do/oauth HTTP/1.1
Token: 525d0891-5148-44a8-a4fa-2992e5a5d8d1
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAAMWIrRkSqwwAG4HTnWjyBE0vi9ge
Content-Length: 156
shot_img=https%3A%2F%2Fyun.zqzan.com%2Fsign%2F06_17%2F%2F1268807849981091841_159238480510682.png%40!fwidth&short_url=https%3A%2F%2Fv.douyin.com%2FJRMQTWA%2F
shot_img=https://yun.zqzan.com/sign/06_17//1268807849981091841_159238480510682.png@!fwidth
short_url=https://v.douyin.com/JRMQTWA/
{"code":0,"msg":"操作成功","data":{}}
6、获取抖音援助任务
POST http://zcore.zqzan.com/app/douyin/pull/one HTTP/1.1
Token: 7eacb6f8-c4b1-4fbe-9676-1a8d4db86073
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAAJNFiRvoOQQAG4HTneafLo5d/4LH
Content-Length: 39
//勾选点赞
b_discount=false&access=1&exam_status=0
//勾选关注
b_discount=false&access=2&exam_status=0
//勾选评论
b_discount=false&access=4&exam_status=0
//勾选转发
b_discount=false&access=8&exam_status=0
//勾选播放
b_discount=false&access=32&exam_status=0
//勾选评论赞
b_discount=false&access=16&exam_status=0
b_discount=false&access=17&exam_status=0
b_discount=false&access=40&exam_status=0
//勾选特价
b_discount=true&access=40&exam_status=0
//响应信息
{"code":0,"msg":"操作成功","data":{"aweme_id":"6840241090453310731","sample_img":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_forward.jpg@!fwidth","b_discount":false,"anchor_id":"61600511795","id":"1274597958634446849","type":8,"earning":12}}
{"code":0,"msg":"操作成功","data":{"aweme_id":"6830032938424421632","sample_img":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_forward.jpg@!fwidth","b_discount":false,"anchor_id":"69378478724","id":"1274603842299240450","type":8,"earning":12}}
{ code: 0, msg: '操作成功', data: { aweme_id: '6840402371030404359', sample_img: 'https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_comment.jpg@!fwidth', b_discount: false, anchor_id: '111559207354', id: '1274600283743059969', type: 4, earning: 50 } }
提交援助图片参数
POST http://zcore.zqzan.com/app/oss/shot_img HTTP/1.1
Token: 7eacb6f8-c4b1-4fbe-9676-1a8d4db86073
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAALjz10WO+gMAG4HTnViQ4XDDVduD
Content-Length: 0
//响应信息
{"code":0,"msg":"操作成功","data":{"accessid":"LTAI4FwVNMW9yHsSHKW5mW3T","signature":"Nh/VE5NPlF/m+ubupV/KNzfDaFo=","prefix":"1268807849981091841_","expire":"1592723859102","host":"https://yun.zqzan.com","format":"@!fwidth","dir":"app/06_21/","policy":"eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yMVQwNzoyMjowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzIxLyJdXX0="}}
7、完成抖音援助任务
//获取任务信息
{"code":0,"msg":"操作成功","data":{"aweme_id":"6838454935365881095","sample_img":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_followd.jpg@!fwidth","b_discount":false,"anchor_id":"4265743143675532","id":"1274622765099253761","type":2,"earning":50}}
图片提交参数
{"code":0,"msg":"操作成功","data":{"accessid":"LTAI4FwVNMW9yHsSHKW5mW3T","signature":"wT3SAGXslHhZb8vwNO7SMQu0MEw=","prefix":"1268807849981091841_","expire":"1592729623306","host":"https://yun.zqzan.com","format":"@!fwidth","dir":"app/06_21/","policy":"eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yMVQwODo1ODowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzIxLyJdXX0="}}
POST https://yun.zqzan.com/ HTTP/1.1
Connection: Keep-Alive
Charset: UTF-8
Content-Type: multipart/form-data; boundary=------Pq8St2
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
Host: yun.zqzan.com
Accept-Encoding: gzip
Content-Length: 151430
--------Pq8St2
Content-Disposition: form-data; name="key"
app/06_21//1268807849981091841_159272916969942.png
--------Pq8St2
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yMVQwODo1ODowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzIxLyJdXX0=
--------Pq8St2
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAI4FwVNMW9yHsSHKW5mW3T
--------Pq8St2
Content-Disposition: form-data; name="signature"
wT3SAGXslHhZb8vwNO7SMQu0MEw=
--------Pq8St2
Content-Disposition: form-data; name="success_action_status"
200
--------Pq8St2
Content-Disposition: form-data; name="file"; filename="1592729169287.ss.android.ugc.aweme.jpg"
Content-Type: image/jpeg
Exif MM
//点击提交
POST http://zcore.zqzan.com/app/douyin/submit/task HTTP/1.1
Token: ed25eaf0-04d8-4b5e-92de-7f0733b8581a
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAAIqD9EeRTwwAG4HTnT1d3yzrZIQ8
Content-Length: 133
doit_id=1274627715765903362&shot_img=https%3A%2F%2Fyun.zqzan.com%2Fapp%2F06_21%2F%2F1268807849981091841_159272990813834.png%40!fwidth
//返回的信息
{"code":0,"msg":"操作成功","data":{}}
8、完整抖音任务开发(一)–获取抖音控件坐标
- 获取抖音控件坐标
- 抖音自动点赞功能开发
- 抖音自动关注功能开发
- 抖音自动评论功能开发
- 请求截图
- 获取token
- 判断是否签到
- 如果未签到则签到
- 如果已签到则获取并完成任务
9、完整抖音任务开发(二)–抖音自动点赞、自动关注、自动评论功能开发
10、完整抖音任务开发(三)–请求截图权限、获取token
11、完整抖音任务开发(四)–判断是否签到
12、完整抖音任务开发(五)–获取抖音任务函数封装
13、完整抖音任务开发(六)–获取抖音任务图片上传参数
//图片上传参数
POST http://zcore.zqzan.com/app/oss/shot_img HTTP/1.1
Token: 3456c83e-a9ed-4c60-abe6-18ddd7168b7c
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAAPRCMUNY3QkAG4HSjdWH+a4DkyJf
Content-Length: 0
{"code":0,"msg":"操作成功","data":{"accessid":"LTAI4FwVNMW9yHsSHKW5mW3T","signature":"Mo6Hm1rR6FacCxREq2NM3bydCvo=","prefix":"1268807849981091841_","expire":"1593249949356","host":"https://yun.zqzan.com","format":"@!fwidth","dir":"app/06_27/","policy":"eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yN1QwOTozMDowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzI3LyJdXX0="}}
//上传图片
POST https://yun.zqzan.com/ HTTP/1.1
Connection: Keep-Alive
Charset: UTF-8
Content-Type: multipart/form-data; boundary=------8Jk2Mn
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
Host: yun.zqzan.com
Accept-Encoding: gzip
Content-Length: 128026
--------8Jk2Mn
Content-Disposition: form-data; name="key"
app/06_27//1268807849981091841_159324919250076.png
--------8Jk2Mn
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yN1QwOTozMDowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzI3LyJdXX0=
--------8Jk2Mn
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAI4FwVNMW9yHsSHKW5mW3T
--------8Jk2Mn
Content-Disposition: form-data; name="signature"
Mo6Hm1rR6FacCxREq2NM3bydCvo=
--------8Jk2Mn
Content-Disposition: form-data; name="success_action_status"
200
--------8Jk2Mn
Content-Disposition: form-data; name="file"; filename="1593249192260.ss.android.ugc.aweme.jpg"
Content-Type: image/jpeg
14、完整抖音任务开发(七)–完成抖音援助任务并截图保存
{"code":0,"msg":"操作成功","data":{"accessid":"LTAI4FwVNMW9yHsSHKW5mW3T","signature":"8fzIPSgf++9nAS6i3eab238z0Zs=","prefix":"1268807849981091841_","expire":"1596844685895","host":"https://yun.zqzan.com","format":"@!fwidth","dir":"app/08_08/","policy":"eyJleHBpcmF0aW9uIjoiMjAyMC0wOC0wOFQwMDowMjowMC4wMjlaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA4XzA4LyJdXX0="}}
POST https://yun.zqzan.com/ HTTP/1.1
Connection: Keep-Alive
Charset: UTF-8
Content-Type: multipart/form-data; boundary=------Rs1Uv4
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.7.0.PCOCNXM)
Host: yun.zqzan.com
Accept-Encoding: gzip
Content-Length: 123191
--------Rs1Uv4
Content-Disposition: form-data; name="key"
app/08_08//1268807849981091841_159684386042016.png
--------Rs1Uv4
Content-Disposition: form-data; name="policy"
eyJleHBpcmF0aW9uIjoiMjAyMC0wOC0wOFQwMDowMjowMC4wMjlaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA4XzA4LyJdXX0=
--------Rs1Uv4
Content-Disposition: form-data; name="OSSAccessKeyId"
LTAI4FwVNMW9yHsSHKW5mW3T
--------Rs1Uv4
Content-Disposition: form-data; name="signature"
8fzIPSgf++9nAS6i3eab238z0Zs=
--------Rs1Uv4
Content-Disposition: form-data; name="success_action_status"
200
--------Rs1Uv4
Content-Disposition: form-data; name="file"; filename="1596843860038.ss.android.ugc.aweme.jpg"
Content-Type: image/jpeg
--------Rs1Uv4--
POST http://zcore.zqzan.com/app/douyin/submit/task HTTP/1.1
Token: ce18ae97-2a03-47d0-b37c-5604e7e2203f
Content-Type: application/x-www-form-urlencoded
user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
Host: zcore.zqzan.com
Connection: Keep-Alive
Accept-Encoding: gzip
Cookie: sec_tc=AQAAAE9jKl6vegYAG4HRMfQRYy03htvJ
Content-Length: 133
doit_id=1291882588513361922&shot_img=https%3A%2F%2Fyun.zqzan.com%2Fapp%2F08_08%2F%2F1268807849981091841_159684386042016.png%40!fwidth