Autojs模块:HTTP协议

协议开发基础

哔哩哔哩:https://www.bilibili.com/video/BV1hAfqYkEyj/

HTTP基础


1、HTTP概念介绍


  • HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)
  • 基于TCP/IP通信协议来传递数据
  • 工作原理
    Autojs模块:HTTP协议
    软件:模拟客户端发送数据到服务器

脚本:充当发送数据的客户端

  • 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 请求可能会导致新的资源的建立和/或已有资源的修改。
Autojs模块:HTTP协议

4、HTTP报文详解


Autojs模块: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)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。

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的格式可以是以下几种情况:

  1. string
  2. 文件类型,即open()返回的类型
  3. [fileName, filePath]
  4. [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、完整抖音任务开发(一)–获取抖音控件坐标


  1. 获取抖音控件坐标
  2. 抖音自动点赞功能开发
  3. 抖音自动关注功能开发
  4. 抖音自动评论功能开发
  5. 请求截图
  6. 获取token
  7. 判断是否签到
  8. 如果未签到则签到
  9. 如果已签到则获取并完成任务

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
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧