前言
需要适量掌握点shell常识
=
左右两边是没有空格的
- 单引号中特殊字符为纯文本,双引号则保持原有特性
- 『`命令`』或 『$(命令)』用于包裹整个命令
- 若该变量需要在其他子程序运行,则需要以
export
来使变量变成环境变量
- 取消变量的方法为使用
unset
Curl
一个简单的GET请求
| curl https://www.mobenw.cn/
|
相关参数
| -H 请求头,设置一个请求头"name: value"格式 -A UA头 -d 请求体,键值对形式 -F 表示上传文件 格式为:"file=@FILE_PATH" -k 跳过 SSL 检测 -s 去掉控制台输出的请求信息 -X 请求方式,常用的POST、GET
|
尝试
这里采用以前常用的图床 Freebuf
以前觉得香香的访问速度贼快,可是自从他加了防盗链之后就不适合做图床了
简单的测试
| curl -X POST 'https://www.freebuf.com/buf/plugins/ueditor/ueditor/php/imageUp.php'-F 'upfile=@"./img.jpg"'
|
接口返回的内容为
| {'url':'images/20220121/16427621503296.jpg!small','title':'','original':'15563722119316.jpg','state':'SUCCESS'}
|
返回的是一个json格式,Typroa所需要的是一个图片的链接(String)
于是乎需要对响应体进行json处理
虽说 awk
sed
能够处理,但编写起来还是不方便,不如直接使用第三方库
参考
使用python3处理数据
| curl -sX POST 'https://www.freebuf.com/buf/plugins/ueditor/ueditor/php/imageUp.php' -F 'upfile=@"./img.jpg"' | python3 -c "import sys, json; print('https://image.3001.net/'+json.loads(sys.stdin.readline().replace('\'','\"'))['url'].split('!')[0])"
|
由于返回值是非标准的json,需要将单引号转化为双引号,于是这里在python中进行了一系列处理
功能上基本实现了,再根据Typroa
的接口进行调整
接口采用的是 『Command <arg1> <arg2>』
于是需要将命令写入到.sh
文件中,并使图片路径以参数形式传入
| #!/bin/bash for path in "$@"; do res=$( curl -sX POST 'https://www.freebuf.com/buf/plugins/ueditor/ueditor/php/imageUp.php' -F 'upfile=@"'$path'"' | python3 -c "import sys, json; print('https://image.3001.net/'+json.loads(sys.stdin.readline().replace('\'','\"'))['url'].split('!')[0])" ) echo $res done
|