如何通过Base64编码结合Curl向Plantin发送图片诊断
Plantin平台植物诊断Bash脚本实现
要给Plantin平台发送图片进行植物问题诊断,平台要求图片必须经过Base64编码才能被接口接收。以下是对应的Bash脚本示例,功能是将garage-cam.jpg文件编码为Base64格式,再通过Curl请求Plantin的诊断接口,包含完整请求头、认证信息及响应处理逻辑。
#!/bin/bash # 将图片文件编码为Base64格式 img="$(cat garage-cam.jpg | base64)" # 发起Curl请求并保存响应结果 res=$(curl 'https://myplantin.com/next-api/trpc/plant-problems.diagnose?batch=1' \ -H 'Accept: */*' \ -H 'Accept-Language: en-US,en;q=0.9' \ -H 'Authorization: 044c8b07-eafe-4df9-895c-993502c8957e' \ -H 'Connection: keep-alive' \ -H 'Cookie: G_ENABLED_IDPS=google; pln-token=044c8b07-eafe-4df9-895c-993502c8957e; pln-user-premium=true; pln-user-id=13265880; amp_d5c551=0dmtVtWfuoKAICgbsaX_1K.MTMyNjU4ODA=..1gni9mah5.1gniat51t.37.4.3b' \ -H 'Origin: https://myplantin.com' \ -H 'Referer: https://myplantin.com/plant-problems' \ -H 'Sec-Fetch-Dest: empty' \ -H 'Sec-Fetch-Mode: cors' \ -H 'Sec-Fetch-Site: same-origin' \ -H 'User-Agent: Mozilla/5.0 (X11; CrOS armv7l 13597.84.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.105 Safari/537.36' \ -H 'content-type: application/json' \ -H 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="104"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "Linux"' \ --data-raw '{"0":{"json":{"images":[{"base64":"data:image/jpeg;base64,'"$img"'"}]}}}' \ --compressed) # 检查请求是否成功,并提取诊断结果链接 if echo "$res" | grep -qo '"status":200'; then link=$(echo "$res" | sed -e 's/.*"link":"\([^"]*\).*/\1/' -e 's/\\\//g') echo "诊断结果链接:$link" fi
脚本关键说明
- 第一步完成图片的Base64编码,满足平台接口的格式要求
- 请求头包含了认证信息、浏览器标识、跨域相关参数等接口必需的字段
- 修正了原脚本中请求体的字符串拼接错误,确保Base64数据正确传入接口
- 响应处理逻辑会验证请求状态,成功时提取并输出诊断结果的链接
内容的提问来源于stack exchange,提问作者iUncleMike
相关产品推荐
相关产品推荐

