From b8c144236c3eedb136ab97be336e26cfa64bf9ee Mon Sep 17 00:00:00 2001 From: lihai2333 Date: Sat, 12 Sep 2020 16:09:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/manual.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/docs/manual.md b/docs/manual.md index 3a28d70..b4077c7 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -50,13 +50,13 @@ curl ftps://files.are.secure.com/secrets.txt curl --ftp-ssl ftp://files.are.secure.com/secrets.txt ``` -通过ssh获取sftp服务器上的文件(`-u` 参数后要写登录sftp服务器的用户名,如果连接服务器成功,会让你输入密码): +通过ssh获取sftp服务器上的文件(`-u` 参数后要写登录sftp服务器的用户名(也可以直接在用户名后面加密码但要用 `:` 分割,如 admin@123456789),如果连接服务器成功,会让你输入密码): ```bash curl -u username sftp://example.com/etc/issue # example.com 纯属虚构,只是个事例 ``` -使用ssh从scp服务器上获取文件(在本地生成密钥,使用--key参数引入密钥在计算机上的位置。简要概括就是密钥免去了密码验证,如果密钥有密码请看下一个,这个也是需要看的) +使用ssh从scp服务器上获取文件(在本地生成私钥,使用 `--key` 参数引入私钥在计算机上的位置。简要概括就是私钥免去了密码验证,如果密钥有密码请看下一个,这个也是需要看的) ```bash curl -u username: --key ~/.ssh/id_rsa scp://example.com/~/file.txt @@ -117,3 +117,81 @@ curl -o baidu.html https://www.baidu.com/ ```bash curl -O https://www.baidu.com/index.html ``` + +## 给网页传输密码 + +curl能传输密码,既然能传输密码就能登录网页。 + +### Ftp + +使用用户名密码登录ftp服务器,获取文件: + +```bash +curl ftp://name:passwd@machine.domain:port/full/path/to/file +``` + +格式 + +```bash +curl ftp://<用户名>:<密码>@xxx.com:port/xxx +``` + +在 `<用户名>:<密码>` 后,有一个 `@` ,你注意到了吗?这种登录方式不仅能在ftp协议网址中用,还能在其他协议中用。 + +或者使用 `-u` 参数登录,:passwd可以省略,只用有用户名就好了,如果连接上了服务器会让你输入密码: + +```bash +curl -u name:passwd ftp://machine.domain:port/full/path/to/file +``` + +### FTPS + +它和ftp相似,如果你看了前面的ftps文件获取实例,你肯定发现了它需要一个 `--ftp-ssl` 参数。 + +请注意!建议不要不加 `--ftp-ssl` 参数获取文件,或者直接使用ftp(ftp://)协议 + +### SFTP / SCP + +这两个和FTP相似,但是你可以使用 `--key` 参数来指定要使用的私钥的位置,而不是登录的密码密码。请注意,私钥可能受有密码保护,需要输入密码;该密码是使用 `--pass` 参数指定的。通常,curl将自动从私钥文件的目录下提取公钥,但是curl在没有适当的库支持的情况下,必须使用 `--pubkey` 选项指定的公钥文件的位置。 + +### HTTP + +curl还支持HTTP网址的登录操作: + +```bash +curl http://name:passwd@machine.domain/full/path/to/file +``` + +和ftp一样,还有一种: + +```bash +curl -u name:passwd http://machine.domain/full/path/to/file +``` + +---- + +HTTP提供了许多不同的身份验证方法,curl支持这些身份验证方法:Basic、Digest、NTLM、Negotiate(SPNEGO)。你可能不知道使用哪种方法,所以curl默认为Basic。您还可以使用 `--anyauth` 参数让curl从服务器可使用身份验证方法中选择最安全的验证方法。 + +注意!根据URL规范,HTTP网址不能包含用户和密码,当通过网络代理使用curl时,这种方法不会起作用,尽管在其他时候curl允许这样做。使用网络代理时,用户和密码必须使用 `-u` 参数。 + +### HTTPS + +最常用于私有证书。 + +### Proxy + +curl支持HTTP和SOCKS代理服务器,并提供多个的身份验证方法。它没有对FTP代理服务器支持,这个服务器目前没有标准,但是它仍然可以和其它许多服务器一起工作。您还可以使用HTTP和SOCKS代理在FTP服务器之间传输文件。 + +使用名为my-proxy的HTTP代理获取ftp文件,代理的端口是888(使用 `-x` 参数指定代理服务器): + +```bash +curl -x my-proxy:888 ftp://ftp.leachsite.com/README +``` + +使用代理登录网页: + +```bash +curl -u user:passwd -x my-proxy:888 http://www.get.this/ +``` + + -- GitLab