Bash 从服务器 A 下载 HTML 并将其 POST 下载到服务器 B 的脚本

Bash script to download HTML from server A and POST it to server B

本地网络中有一个网站。我想编写一个 bash 脚本,它将从本地网站下载 HTML 并将其发送到外部服务器,PHP 脚本可以从 $_POST 读取它:

html=$(wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php)
#so far so good, and $html contains data I want to send to my website
wget --post-data="html=$html" -qO- http://mywebsite.com/test.php

test.php 中,数据总是格式错误。

有什么方法可以正确转义 $html,还是我应该完全改变解决问题的方法?

  1. 在发送请求之前使用 Base64 对您的 HTML 进行编码:

    html=$( wget --post-data="str=data" -qO- http://192.168.1.8/reg/index.php | base64 )
    
  2. URL-编码您的 POST 数据。

    不幸的是,wget 不会 URL 为您编码 post 数据。如果 可用,您可以使用 curl,它为 POST 请求:

    curl -S -d "str=${html}" --data-urlencode -- http://mywebsite.com/test.php
    

    如果curl不可用,您需要替换$html中的所有+ %2B 和所有 / %2F 在 post 到 test.php 之前,例如 使用:

    html=$( sed -e 's/+/%2B/g' -e 's/\//%2F/g' <<< "$html" )
    
  3. test.php中,你之前将$_POST['str']传递给base64_decode() 使用它,查看它
    documentation.