我需要使用 CURL 通过https协议登录网站,并在特定文件夹中上传文件。我可以通过HTTPS在启用CSRF的网站上通过curl登录网站。但是我无法上传文件。我猜是因为为HTTPS协议启用了 CSRF 令牌。 所以我需要弄清楚如何处理CSRF令牌并使用CURL命令通过HTTPS协议上传文件。
登录格式:(工作)
curl -u username:password https://ftp.example.com
上传格式:(不工作)
curl -k -T "./testfile.txt" -u "username":"password" https://example.com/upload/
注1:我目前正在运行此命令RHEL 6。
注2:我需要处理CSRF令牌。
注3:能够通过ftp和sftp协议登录/上传。
我非常感谢为此提供解决方案。谢谢!
答案 0 :(得分:0)
工作解决方案!
最后一些我如何设法为此找到解决方案,
我们需要在第一次连接中下载CSRF令牌,然后在第二次连接尝试时使用下载的CSRF令牌。我们来看下面的示例脚本。
#!/bin/sh
logs_path="/home/usr/logs" #Change your path here
my_username="testuser" #Change your username here
my_password="testuser" #Change your password here
host_name="localhost.com" #Change your sitename here
touch "$logs_path/testfile.test"
curl -k -c "$logs_path/cookies.txt" -u "$my_username":"$my_password" "https://$host_name:443" > /dev/null 2>&1
curl -k -b "$logs_path/cookies.txt" -T "$logs_path/testfile.test" -u "$my_username":"$my_password" "https://$host_name:443/puts/" > /dev/null 2>&1
status="$?"
if [[ $status == 0 ]]; then
echo -e "\nSuccess!"
else
echo -e "\nFailed!"
fi