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)
  • 空行
  • 请求数据

四个部分组成

  1. GET https://www.baidu.com/ HTTP/1.1
  2. Host: www.baidu.com
  3. Connection: keep-alive
  4. Cache-Control: max-age=0
  5. Upgrade-Insecure-Requests: 1
  6. 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
  7. 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
  8. Sec-Fetch-Site: none
  9. Sec-Fetch-Mode: navigate
  10. Sec-Fetch-User: ?1
  11. Sec-Fetch-Dest: document
  12. Accept-Encoding: gzip, deflate, br
  13. Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
  14. 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响应也由四个部分组成,分别是:

  • 响应行
  • 消息报头
  • 空行
  • 响应正文
  1. HTTP/1.1 200 OK
  2. Bdpagetype: 1
  3. Bdqid: 0xb867f32700718b16
  4. Cache-Control: private
  5. Connection: keep-alive
  6. Content-Type: text/html;charset=utf-8
  7. Date: Mon, 15 Jun 2020 00:10:50 GMT
  8. Expires: Mon, 15 Jun 2020 00:10:48 GMT
  9. Server: BWS/1.1
  10. Set-Cookie: BDSVRTM=0; path=/
  11. Set-Cookie: BD_HOME=1; path=/
  12. Set-Cookie: H_PS_PSSID=1450_31326_21109_32046_31322_30823_26350_22160; path=/; domain=.baidu.com
  13. Strict-Transport-Security: max-age=172800
  14. Traceid: 1592179850063549517813287856574416653078
  15. X-Ua-Compatible: IE=Edge,chrome=1
  16. Content-Length: 248402
  17. <!DOCTYPE html><!--STATUS OK-->
  18. .....

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部署在专用域名之下。

  1. https://api.example.com
  2. https://example.org/api/

2、版本号

应该将API的版本号放入URL。

  1. 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作为键名,出错信息作为键值即可。

  1. {
  2. error: "Invalid API key"
  3. }

– 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请求如下:

  1. console.show();
  2. var r = http.get("www.baidu.com");
  3. log("code = " + r.statusCode);
  4. log("html = " + r.body.string());

采用回调形式的GET请求如下:

  1. console.show();
  2. http.get("www.baidu.com", {}, function(res, err){
  3. if(err){
  4. console.error(err);
  5. return;
  6. }
  7. log("code = " + res.statusCode);
  8. log("html = " + res.body.string());
  9. });

如果要增加HTTP头部信息,则在options参数中添加,例如:

  1. console.show();
  2. var r = http.get("www.baidu.com", {
  3. headers: {
  4. 'Accept-Language': 'zh-cn,zh;q=0.5',
  5. 'User-Agent': 'Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11'
  6. }
  7. });
  8. log("code = " + r.statusCode);
  9. log("html = " + r.body.string());

一个请求天气并解析返回的天气JSON结果的例子如下:

  1. var city = "广州";
  2. var res = http.get("http://www.sojson.com/open/api/weather/json.shtml?city=" + city);
  3. if(res.statusCode != 200){
  4. toast("请求失败: " + res.statusCode + " " + res.statusMessage);
  5. }else{
  6. var weather = res.body.json();
  7. log(weather);
  8. toast(util.format("温度: %s 湿度: %s 空气质量: %s", weather.data.wendu,
  9. weather.data.shidu, weather.quality));
  10. }

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函数的默认方式。

一个模拟表单提交登录淘宝的例子如下:

  1. var url = "https://login.taobao.com/member/login.jhtml";
  2. var username = "你的用户名";
  3. var password = "你的密码";
  4. var res = http.post(url, {
  5. "TPL_username": username,
  6. "TPL_password": password
  7. });
  8. var html = res.body.string();
  9. if(html.contains("页面跳转中")){
  10. toast("登录成功");
  11. }else{
  12. toast("登录失败");
  13. }

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函数的默认方式。

一个调用图灵机器人接口的例子如下:

  1. var url = "http://www.tuling123.com/openapi/api";
  2. r = http.postJson(url, {
  3. key: "65458a5df537443b89b31f1c03202a80",
  4. info: "你好啊",
  5. userid: "1",
  6. });
  7. 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为文件参数。举个例子,最简单的文件上传的请求为:

  1. var res = http.postMultipart(url, {
  2. file: open("/sdcard/1.txt")
  3. });
  4. log(res.body.string());

如果使用格式2,则代码为

  1. var res = http.postMultipart(url, {
  2. file: ["1.txt", "/sdcard/1.txt"]
  3. });
  4. log(res.body.string());

如果使用格式3,则代码为

  1. var res = http.postMultipart(url, {
  2. file: ["1.txt", "text/plain", "/sdcard/1.txt"]
  3. });
  4. log(res.body.string());

如果使用格式2的同时要附带非文件参数”appId=abcdefghijk”,则为:

  1. var res = http.postMultipart(url, {
  2. appId: "adcdefghijk",
  3. file: open("/sdcard/1.txt")
  4. });
  5. 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状态码的信息

例子:

  1. var res = http.get("www.baidu.com");
  2. if(res.statusCode >= 200 && res.statusCode < 300){
  3. toast("页面获取成功!");
  4. }else if(res.statusCode == 404){
  5. toast("页面没找到哦...");
  6. }else{
  7. toast("错误: " + res.statusCode + " " + res.statusMessage);
  8. }

Response.headers


  • {Object}

当前响应的HTTP头部信息。该对象的键是响应头名称,值是各自的响应头值。 所有响应头名称都是小写的(吗)。

有关HTTP头部信息

例子:

  1. console.show();
  2. var res = http.get("www.qq.com");
  3. console.log("HTTP Headers:")
  4. for(var headerName in res.headers){
  5. console.log("%s: %s", headerName, res.headers[headerName]);
  6. }

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、攒攒安卓协议登录


  1. POST http://zcore.zqzan.com/app/account/raw/login HTTP/1.1
  2. Token:
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAALf8VmkAQAEAG4HTnXd0gMJUmJDA
  9. Content-Length: 38
  10. username=13180569395&loginpw=aaattt123

2、攒攒网页协议登录


  1. POST http://zcore.zqzan.com/app/account/raw/login HTTP/1.1
  2. Host: zcore.zqzan.com
  3. Connection: keep-alive
  4. Content-Length: 38
  5. 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
  6. Token:
  7. Content-Type: application/x-www-form-urlencoded
  8. Accept: */*
  9. Origin: http://app.zqzan.com
  10. Referer: http://app.zqzan.com/pages/login/login
  11. Accept-Encoding: gzip, deflate
  12. Accept-Language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6
  13. username=13180569395&loginpw=aaattt123

3、攒攒协议:抖音首次签到任务


  1. POST http://zcore.zqzan.com/app/douyin/mine/my/info HTTP/1.1
  2. Token: c5e57ad2-7a90-4ee6-8b74-17c81b864646
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAADUwB3uXLgsAG4HTncRTKMZ/rg3O
  9. Content-Length: 0

任务状态

  1. //签到任务未完成
  2. {"code":0,"msg":"敕何敕啕","data":{"sign_douyin_sample":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_sign.jpg@!fwidth","dyin_status":0}}
  3. //开始考试
  4. {"code":0,"msg":"操作成功","data":{"exam_douyin":10,"dyin_status":3}}
  5. //首次签到提交完成
  6. {"code":0,"msg":"操作成功","data":{"sign_douyin_sample":"https://zqzan.oss-cn-shanghai.aliyuncs.com/sample/dy_sign.jpg@!fwidth","dyin_status":2}}
  7. //开始援助
  8. {"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":"-"}}
  1. POST http://zcore.zqzan.com/app/oss/sign_img HTTP/1.1
  2. Token: c5e57ad2-7a90-4ee6-8b74-17c81b864646
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAADUwB3uXLgsAG4HTncRTKMZ/rg3O
  9. Content-Length: 0
  1. {"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、抖音首次签到任务提交截图


  1. https://v.douyin.com/JRMQTWA/
  1. POST https://yun.zqzan.com/ HTTP/1.1
  2. Connection: Keep-Alive
  3. Charset: UTF-8
  4. Content-Type: multipart/form-data; boundary=------l4No7Q
  5. User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
  6. Host: yun.zqzan.com
  7. Accept-Encoding: gzip
  8. Content-Length: 84117
  9. --------l4No7Q
  10. Content-Disposition: form-data; name="key"
  11. sign/06_17//1268807849981091841_159238480510682.png
  12. --------l4No7Q
  13. Content-Disposition: form-data; name="policy"
  14. eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0xN1QwOToyMjowMC4wMjNaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5Iiwic2lnbi8wNl8xNy8iXV19
  15. --------l4No7Q
  16. Content-Disposition: form-data; name="OSSAccessKeyId"
  17. LTAI4FwVNMW9yHsSHKW5mW3T
  18. --------l4No7Q
  19. Content-Disposition: form-data; name="signature"
  20. ho5m8OOgJQdlXeHCCTYFjBlCOvA=
  21. --------l4No7Q
  22. Content-Disposition: form-data; name="success_action_status"
  23. 200
  24. --------l4No7Q
  25. Content-Disposition: form-data; name="file"; filename="1592384804817.ss.android.ugc.aweme.jpg"
  26. Content-Type: image/jpeg
  1. HTTP/1.1 200 OK
  2. Server: AliyunOSS
  3. Date: Wed, 17 Jun 2020 09:06:47 GMT
  4. Content-Length: 0
  5. Connection: keep-alive
  6. x-oss-request-id: 5EE9DD278DA7CA3136DBF2CE
  7. ETag: "6BE01D0F07979521C28482400AB68CF4"
  8. x-oss-hash-crc64ecma: 1869845050989223007
  9. Content-MD5: a+AdDweXlSHChIJACraM9A==
  10. x-oss-server-time: 19

5、完成抖音首次签到任务


  1. POST http://zcore.zqzan.com/app/douyin/do/oauth HTTP/1.1
  2. Token: 525d0891-5148-44a8-a4fa-2992e5a5d8d1
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAAMWIrRkSqwwAG4HTnWjyBE0vi9ge
  9. Content-Length: 156
  10. 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
  11. shot_img=https://yun.zqzan.com/sign/06_17//1268807849981091841_159238480510682.png@!fwidth
  12. short_url=https://v.douyin.com/JRMQTWA/
  1. {"code":0,"msg":"操作成功","data":{}}

6、获取抖音援助任务


  1. POST http://zcore.zqzan.com/app/douyin/pull/one HTTP/1.1
  2. Token: 7eacb6f8-c4b1-4fbe-9676-1a8d4db86073
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAAJNFiRvoOQQAG4HTneafLo5d/4LH
  9. Content-Length: 39
  10. //勾选点赞
  11. b_discount=false&access=1&exam_status=0
  12. //勾选关注
  13. b_discount=false&access=2&exam_status=0
  14. //勾选评论
  15. b_discount=false&access=4&exam_status=0
  16. //勾选转发
  17. b_discount=false&access=8&exam_status=0
  18. //勾选播放
  19. b_discount=false&access=32&exam_status=0
  20. //勾选评论赞
  21. b_discount=false&access=16&exam_status=0
  22. b_discount=false&access=17&exam_status=0
  23. b_discount=false&access=40&exam_status=0
  24. //勾选特价
  25. b_discount=true&access=40&exam_status=0
  1. //响应信息
  2. {"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}}
  3. {"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}}
  4. { 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 } }

提交援助图片参数

  1. POST http://zcore.zqzan.com/app/oss/shot_img HTTP/1.1
  2. Token: 7eacb6f8-c4b1-4fbe-9676-1a8d4db86073
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAALjz10WO+gMAG4HTnViQ4XDDVduD
  9. Content-Length: 0
  10. //响应信息
  11. {"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、完成抖音援助任务


  1. //获取任务信息
  2. {"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}}
  1. 图片提交参数
  2. {"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="}}
  1. POST https://yun.zqzan.com/ HTTP/1.1
  2. Connection: Keep-Alive
  3. Charset: UTF-8
  4. Content-Type: multipart/form-data; boundary=------Pq8St2
  5. User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
  6. Host: yun.zqzan.com
  7. Accept-Encoding: gzip
  8. Content-Length: 151430
  9. --------Pq8St2
  10. Content-Disposition: form-data; name="key"
  11. app/06_21//1268807849981091841_159272916969942.png
  12. --------Pq8St2
  13. Content-Disposition: form-data; name="policy"
  14. eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yMVQwODo1ODowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzIxLyJdXX0=
  15. --------Pq8St2
  16. Content-Disposition: form-data; name="OSSAccessKeyId"
  17. LTAI4FwVNMW9yHsSHKW5mW3T
  18. --------Pq8St2
  19. Content-Disposition: form-data; name="signature"
  20. wT3SAGXslHhZb8vwNO7SMQu0MEw=
  21. --------Pq8St2
  22. Content-Disposition: form-data; name="success_action_status"
  23. 200
  24. --------Pq8St2
  25. Content-Disposition: form-data; name="file"; filename="1592729169287.ss.android.ugc.aweme.jpg"
  26. Content-Type: image/jpeg
  27. Exif MM
  1. //点击提交
  2. POST http://zcore.zqzan.com/app/douyin/submit/task HTTP/1.1
  3. Token: ed25eaf0-04d8-4b5e-92de-7f0733b8581a
  4. Content-Type: application/x-www-form-urlencoded
  5. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  6. Host: zcore.zqzan.com
  7. Connection: Keep-Alive
  8. Accept-Encoding: gzip
  9. Cookie: sec_tc=AQAAAIqD9EeRTwwAG4HTnT1d3yzrZIQ8
  10. Content-Length: 133
  11. doit_id=1274627715765903362&shot_img=https%3A%2F%2Fyun.zqzan.com%2Fapp%2F06_21%2F%2F1268807849981091841_159272990813834.png%40!fwidth
  12. //返回的信息
  13. {"code":0,"msg":"操作成功","data":{}}

8、完整抖音任务开发(一)–获取抖音控件坐标


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

9、完整抖音任务开发(二)–抖音自动点赞、自动关注、自动评论功能开发


10、完整抖音任务开发(三)–请求截图权限、获取token


11、完整抖音任务开发(四)–判断是否签到


12、完整抖音任务开发(五)–获取抖音任务函数封装


13、完整抖音任务开发(六)–获取抖音任务图片上传参数


  1. //图片上传参数
  2. POST http://zcore.zqzan.com/app/oss/shot_img HTTP/1.1
  3. Token: 3456c83e-a9ed-4c60-abe6-18ddd7168b7c
  4. Content-Type: application/x-www-form-urlencoded
  5. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  6. Host: zcore.zqzan.com
  7. Connection: Keep-Alive
  8. Accept-Encoding: gzip
  9. Cookie: sec_tc=AQAAAPRCMUNY3QkAG4HSjdWH+a4DkyJf
  10. Content-Length: 0
  11. {"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="}}
  1. //上传图片
  2. POST https://yun.zqzan.com/ HTTP/1.1
  3. Connection: Keep-Alive
  4. Charset: UTF-8
  5. Content-Type: multipart/form-data; boundary=------8Jk2Mn
  6. User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.6.0.PCOCNXM)
  7. Host: yun.zqzan.com
  8. Accept-Encoding: gzip
  9. Content-Length: 128026
  10. --------8Jk2Mn
  11. Content-Disposition: form-data; name="key"
  12. app/06_27//1268807849981091841_159324919250076.png
  13. --------8Jk2Mn
  14. Content-Disposition: form-data; name="policy"
  15. eyJleHBpcmF0aW9uIjoiMjAyMC0wNi0yN1QwOTozMDowMC4wMDBaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA2XzI3LyJdXX0=
  16. --------8Jk2Mn
  17. Content-Disposition: form-data; name="OSSAccessKeyId"
  18. LTAI4FwVNMW9yHsSHKW5mW3T
  19. --------8Jk2Mn
  20. Content-Disposition: form-data; name="signature"
  21. Mo6Hm1rR6FacCxREq2NM3bydCvo=
  22. --------8Jk2Mn
  23. Content-Disposition: form-data; name="success_action_status"
  24. 200
  25. --------8Jk2Mn
  26. Content-Disposition: form-data; name="file"; filename="1593249192260.ss.android.ugc.aweme.jpg"
  27. Content-Type: image/jpeg

14、完整抖音任务开发(七)–完成抖音援助任务并截图保存


  1. {"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="}}
  2. POST https://yun.zqzan.com/ HTTP/1.1
  3. Connection: Keep-Alive
  4. Charset: UTF-8
  5. Content-Type: multipart/form-data; boundary=------Rs1Uv4
  6. User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Redmi Note 8 MIUI/V11.0.7.0.PCOCNXM)
  7. Host: yun.zqzan.com
  8. Accept-Encoding: gzip
  9. Content-Length: 123191
  10. --------Rs1Uv4
  11. Content-Disposition: form-data; name="key"
  12. app/08_08//1268807849981091841_159684386042016.png
  13. --------Rs1Uv4
  14. Content-Disposition: form-data; name="policy"
  15. eyJleHBpcmF0aW9uIjoiMjAyMC0wOC0wOFQwMDowMjowMC4wMjlaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMzE0NTcyODBdLFsic3RhcnRzLXdpdGgiLCIka2V5IiwiYXBwLzA4XzA4LyJdXX0=
  16. --------Rs1Uv4
  17. Content-Disposition: form-data; name="OSSAccessKeyId"
  18. LTAI4FwVNMW9yHsSHKW5mW3T
  19. --------Rs1Uv4
  20. Content-Disposition: form-data; name="signature"
  21. 8fzIPSgf++9nAS6i3eab238z0Zs=
  22. --------Rs1Uv4
  23. Content-Disposition: form-data; name="success_action_status"
  24. 200
  25. --------Rs1Uv4
  26. Content-Disposition: form-data; name="file"; filename="1596843860038.ss.android.ugc.aweme.jpg"
  27. Content-Type: image/jpeg
  28. --------Rs1Uv4--
  1. POST http://zcore.zqzan.com/app/douyin/submit/task HTTP/1.1
  2. Token: ce18ae97-2a03-47d0-b37c-5604e7e2203f
  3. Content-Type: application/x-www-form-urlencoded
  4. user-agent: Redmi Note 8(Android/9) (com.zanqzan.app/1.2.21) Weex/0.26.0 1080x2130
  5. Host: zcore.zqzan.com
  6. Connection: Keep-Alive
  7. Accept-Encoding: gzip
  8. Cookie: sec_tc=AQAAAE9jKl6vegYAG4HRMfQRYy03htvJ
  9. Content-Length: 133
  10. doit_id=1291882588513361922&shot_img=https%3A%2F%2Fyun.zqzan.com%2Fapp%2F08_08%2F%2F1268807849981091841_159684386042016.png%40!fwidth
0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧