把黄鸟hcy请求转换为autojs请求

牙叔教程 简单易懂

为什么做

有人用黄鸟抓了请求之后, 发现是PUT请求, 就不会搞了,

一般用户都只用过http.get, http.post, http.json,

用PUT的很少, 并且aj官方文档也没有PUT这个API,

所以, 我们一键转换, 把hcy的PUT转换成autojs的PUT

怎么做

1. 分析hcy的请求报文格式
PUT /userAdvertisingRecord HTTP/1.1
user-agent: Dart/2.14 (dart:io)
accept: application/json
accept-encoding: gzip
content-length: 63
host: aaa.bbb.com
authorization: Bearer eyJhbGci_MJmde-u4u6-g
content-type: application/json

{"companyId":"88405824","id":"8100","watchTime":16}

分为三个部分

Request-Line

请求方法 请求URI HTTP 协议版本

PUT /userAdvertisingRecord HTTP/1.1

Request Header Fields

键值对的格式

user-agent: Dart/2.14 (dart:io)
accept: application/json
accept-encoding: gzip
content-length: 63
host: aaa.bbb.com
authorization: Bearer eyJhbGci_MJmde-u4u6-g
content-type: application/json

Message Body

{"companyId":"88405824","id":"8100","watchTime":16}
2. 读取hcy文本内容, 提取Request-Line, Request Header Fields, Message Body
let content = files.read(files.path("./http_req_001.hcy"));
let lines = content.split("\r\n");
let requestLine = lines[0];
log(requestLine);
let emptyLineIndex;
var len = lines.length;
for (var i = 0; i < len; i++) {
  if (lines[i] === "") {
    emptyLineIndex = i;
    break;
  }
}
let requestHeaderFields = lines.slice(1, emptyLineIndex);
log(requestHeaderFields);
let messageBody = lines[emptyLineIndex + 1];
log(messageBody);
3. 拼凑url
let host = "";
len = requestHeaderFields.length;
for (var i = 0; i < len; i++) {
  let kv = requestHeaderFields[i].split(": ");
  if (kv[0] === "host") {
    host = kv[1];
    break;
  }
}
let url = host + requestLine.split(" ")[1];
log(url);
4. 整理headers
let headers = {};
len = requestHeaderFields.length;
for (var i = 0; i < len; i++) {
  let kv = requestHeaderFields[i].split(": ");
  headers[kv[0]]=kv[1];
}
log(headers);
5. autojs的http模板替换

模板

let r = http
  .request(URL, {
    method: METHOD,
    body: JSON.stringify(BODY),
    headers: HEADERS,
  })
  .body.string();
log(r);

变量映射

URL --> url
METHOD --> requestLine.split(' ')[0]
BODY --> messageBody ? JSON.parse(messageBody) : ''
HEADERS --> headers

总结

以上就是黄鸟hcy请求转换为autojs请求的关键代码,

转换方法最重要的是要搞清楚, http报文格式,

然后就是字符串替换.

环境

Autojs版本: 9.0.10

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
— 牙叔教程

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

把黄鸟hcy请求转换为autojs请求_第1张图片

QQ群

747748653
把黄鸟hcy请求转换为autojs请求_第2张图片

完整源码

你可能感兴趣的:(autojs,autojs,fiddler,黄鸟,httpcanary,put)