Curl 下载安装和配置

1.1 什么是Curl?

Curl 是一个命令行工具和库,用于通过URL传输数据。

简单来说呢,根据我的理解

Curl 就是一个可以通过命令行发送GET,POST 等多种协议请求的工具。

1.2 Curl 支持的网络协议

DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,
POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet and
TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP
uploading, HTTP form based upload, proxies, HTTP/2, cookies,
user+password authentication (Basic, Plain, Digest, CRAM-MD5, NTLM,
Negotiate and Kerberos), file transfer resume, proxy tunneling and
more.

1.3 Curl 是做什么用的?

  • Curl在命令行或脚本中用于传输数据。
  • 它还用于汽车,电视机,路由器,打印机,音频设备,手机,平板电脑,机顶盒,媒体播放器中,并且是数千种每天影响数十亿人口的软件应用程序的互联网传输基础。
  • Curl 是免费开源的

1.4 Curl 如何下载安装?

1.4.1 Windows 平台

2019年9月11日 当前最新版本是7.66.0

Curl 点击下载

打开上面网址后,我们可以看到这样的界面
在这里插入图片描述

  • 如果是windows 操作系统就点击图中所示这个。
  • 如果是linux 请下载对应的版本。

1.4.2 Linux 平台

Linux 平台的下载和安装方法见这里 Get curl for Linux

1.4.3 Mac OS 平台

如果你使用的Mac OS 操作系统,那么可以参考Get curl for macOS

1.5 Curl 配置

1.5.1 解压

下载完成后,我解压到了这样一个目录

C:\app\curl\curl-7.66.0
在这里插入图片描述

1.5.2 配置环境变量

Curl 和其他一些常用的Java 工具一样,如果我们想要在命令行的任意路径下使用它,最好把它添加到Path环境变量里。

我们新建一个环境变量

CURL_HOME
C:\app\curl\curl-7.66.0

效果如图所示
在这里插入图片描述
然后Path中追加这个环境变量即可

%CURL_HOME%\bin\

效果图如下所示
在这里插入图片描述

1.5.3 验证安装配置是否成功

如果想验证是否安装配置成功,可以输入如下命令即可

curl --version

或者

curl -v / --version

值得注意的是,貌似它针对windows 平台的Powshell 支持不够友好,输入这个名会报错,只能在cmd下才可以。

1.6 如何使用Curl?

官方文档
GitHub 主页

命令行下输入命令

curl --help

输出命令语法如下:

Usage: curl [options...] <url>
     --abstract-unix-socket <path> Connect via abstract Unix domain socket
     --anyauth       Pick any authentication method
 -a, --append        Append to target file when uploading
     --basic         Use HTTP Basic Authentication
     --cacert <CA certificate> CA certificate to verify peer against
     --capath <dir>  CA directory to verify peer against
 -E, --cert <certificate[:password]> Client certificate file and password
     --cert-status   Verify the status of the server certificate
     --cert-type <type> Certificate file type (DER/PEM/ENG)
     --ciphers <list of ciphers> SSL ciphers to use
     --compressed    Request compressed response
 -K, --config <file> Read config from a file
     --connect-timeout <seconds> Maximum time allowed for connection
     --connect-to <HOST1:PORT1:HOST2:PORT2> Connect to host
 -C, --continue-at <offset> Resumed transfer offset
 -b, --cookie <data> Send cookies from string/file
 -c, --cookie-jar <filename> Write cookies to <filename> after operation
     --create-dirs   Create necessary local directory hierarchy
     --crlf          Convert LF to CRLF in upload
     --crlfile <file> Get a CRL list in PEM format from the given file
 -d, --data <data>   HTTP POST data
     --data-ascii <data> HTTP POST ASCII data
     --data-binary <data> HTTP POST binary data
     --data-raw <data> HTTP POST data, '@' allowed
     --data-urlencode <data> HTTP POST data url encoded
     --delegation <LEVEL> GSS-API delegation permission
     --digest        Use HTTP Digest Authentication
 -q, --disable       Disable .curlrc
     --disable-eprt  Inhibit using EPRT or LPRT
     --disable-epsv  Inhibit using EPSV
     --dns-interface <interface> Interface to use for DNS requests
     --dns-ipv4-addr <address> IPv4 address to use for DNS requests
     --dns-ipv6-addr <address> IPv6 address to use for DNS requests
     --dns-servers <addresses> DNS server addrs to use
 -D, --dump-header <filename> Write the received headers to <filename>
     --egd-file <file> EGD socket path for random data
     --engine <name> Crypto engine to use
     --expect100-timeout <seconds> How long to wait for 100-continue
 -f, --fail          Fail silently (no output at all) on HTTP errors
     --fail-early    Fail on first transfer error, do not continue
     --false-start   Enable TLS False Start
 -F, --form <name=content> Specify HTTP multipart POST data
     --form-string <name=string> Specify HTTP multipart POST data
     --ftp-account <data> Account data string
     --ftp-alternative-to-user <command> String to replace USER [name]
     --ftp-create-dirs Create the remote dirs if not present
     --ftp-method <method> Control CWD usage
     --ftp-pasv      Use PASV/EPSV instead of PORT
 -P, --ftp-port <address> Use PORT instead of PASV
     --ftp-pret      Send PRET before PASV
     --ftp-skip-pasv-ip Skip the IP address for PASV
     --ftp-ssl-ccc   Send CCC after authenticating
     --ftp-ssl-ccc-mode <active/passive> Set CCC mode
     --ftp-ssl-control Require SSL/TLS for FTP login, clear for transfer
 -G, --get           Put the post data in the URL and use GET
 -g, --globoff       Disable URL sequences and ranges using {} and []
 -I, --head          Show document info only
 -H, --header <header/@file> Pass custom header(s) to server
 -h, --help          This help text
     --hostpubmd5 <md5> Acceptable MD5 hash of the host public key
 -0, --http1.0       Use HTTP 1.0
     --http1.1       Use HTTP 1.1
     --http2         Use HTTP 2
     --http2-prior-knowledge Use HTTP 2 without HTTP/1.1 Upgrade
     --ignore-content-length Ignore the size of the remote resource
 -i, --include       Include protocol response headers in the output
 -k, --insecure      Allow insecure server connections when using SSL
     --interface <name> Use network INTERFACE (or address)
 -4, --ipv4          Resolve names to IPv4 addresses
 -6, --ipv6          Resolve names to IPv6 addresses
 -j, --junk-session-cookies Ignore session cookies read from file
     --keepalive-time <seconds> Interval time for keepalive probes
     --key <key>     Private key file name
     --key-type <type> Private key file type (DER/PEM/ENG)
     --krb <level>   Enable Kerberos with security <level>
     --libcurl <file> Dump libcurl equivalent code of this command line
     --limit-rate <speed> Limit transfer speed to RATE
 -l, --list-only     List only mode
     --local-port <num/range> Force use of RANGE for local port numbers
 -L, --location      Follow redirects
     --location-trusted Like --location, and send auth to other hosts
     --login-options <options> Server login options
     --mail-auth <address> Originator address of the original email
     --mail-from <address> Mail from this address
     --mail-rcpt <address> Mail from this address
 -M, --manual        Display the full manual
     --max-filesize <bytes> Maximum file size to download
     --max-redirs <num> Maximum number of redirects allowed
 -m, --max-time <time> Maximum time allowed for the transfer
     --metalink      Process given URLs as metalink XML file
     --negotiate     Use HTTP Negotiate (SPNEGO) authentication
 -n, --netrc         Must read .netrc for user name and password
     --netrc-file <filename> Specify FILE for netrc
     --netrc-optional Use either .netrc or URL
 -:, --next          Make next URL use its separate set of options
     --no-alpn       Disable the ALPN TLS extension
 -N, --no-buffer     Disable buffering of the output stream
     --no-keepalive  Disable TCP keepalive on the connection
     --no-npn        Disable the NPN TLS extension
     --no-sessionid  Disable SSL session-ID reusing
     --noproxy <no-proxy-list> List of hosts which do not use proxy
     --ntlm          Use HTTP NTLM authentication
     --ntlm-wb       Use HTTP NTLM authentication with winbind
     --oauth2-bearer <token> OAuth 2 Bearer Token
 -o, --output <file> Write to file instead of stdout
     --pass <phrase> Pass phrase for the private key
     --path-as-is    Do not squash .. sequences in URL path
     --pinnedpubkey <hashes> FILE/HASHES Public key to verify peer against
     --post301       Do not switch to GET after following a 301
     --post302       Do not switch to GET after following a 302
     --post303       Do not switch to GET after following a 303
     --preproxy [protocol://]host[:port] Use this proxy first
 -#, --progress-bar  Display transfer progress as a bar
     --proto <protocols> Enable/disable PROTOCOLS
     --proto-default <protocol> Use PROTOCOL for any URL missing a scheme
     --proto-redir <protocols> Enable/disable PROTOCOLS on redirect
 -x, --proxy [protocol://]host[:port] Use this proxy
     --proxy-anyauth Pick any proxy authentication method
     --proxy-basic   Use Basic authentication on the proxy
     --proxy-cacert <file> CA certificate to verify peer against for proxy
     --proxy-capath <dir> CA directory to verify peer against for proxy
     --proxy-cert <cert[:passwd]> Set client certificate for proxy
     --proxy-cert-type <type> Client certificate type for HTTS proxy
     --proxy-ciphers <list> SSL ciphers to use for proxy
     --proxy-crlfile <file> Set a CRL list for proxy
     --proxy-digest  Use Digest authentication on the proxy
     --proxy-header <header/@file> Pass custom header(s) to proxy
     --proxy-insecure Do HTTPS proxy connections without verifying the proxy
     --proxy-key <key> Private key for HTTPS proxy
     --proxy-key-type <type> Private key file type for proxy
     --proxy-negotiate Use HTTP Negotiate (SPNEGO) authentication on the proxy
     --proxy-ntlm    Use NTLM authentication on the proxy
     --proxy-pass <phrase> Pass phrase for the private key for HTTPS proxy
     --proxy-service-name <name> SPNEGO proxy service name
     --proxy-ssl-allow-beast Allow security flaw for interop for HTTPS proxy
     --proxy-tlsauthtype <type> TLS authentication type for HTTPS proxy
     --proxy-tlspassword <string> TLS password for HTTPS proxy
     --proxy-tlsuser <name> TLS username for HTTPS proxy
     --proxy-tlsv1   Use TLSv1 for HTTPS proxy
 -U, --proxy-user <user:password> Proxy user and password
     --proxy1.0 <host[:port]> Use HTTP/1.0 proxy on given port
 -p, --proxytunnel   Operate through a HTTP proxy tunnel (using CONNECT)
     --pubkey <key>  SSH Public key file name
 -Q, --quote         Send command(s) to server before transfer
     --random-file <file> File for reading random data from
 -r, --range <range> Retrieve only the bytes within RANGE
     --raw           Do HTTP "raw"; no transfer decoding
 -e, --referer <URL> Referrer URL
 -J, --remote-header-name Use the header-provided filename
 -O, --remote-name   Write output to a file named as the remote file
     --remote-name-all Use the remote file name for all URLs
 -R, --remote-time   Set the remote file's time on the local output
 -X, --request <command> Specify request command to use
     --request-target Specify the target for this request
     --resolve <host:port:address> Resolve the host+port to this address
     --retry <num>   Retry request if transient problems occur
     --retry-connrefused Retry on connection refused (use with --retry)
     --retry-delay <seconds> Wait time between retries
     --retry-max-time <seconds> Retry only within this period
     --sasl-ir       Enable initial response in SASL authentication
     --service-name <name> SPNEGO service name
 -S, --show-error    Show error even when -s is used
 -s, --silent        Silent mode
     --socks4 <host[:port]> SOCKS4 proxy on given host + port
     --socks4a <host[:port]> SOCKS4a proxy on given host + port
     --socks5 <host[:port]> SOCKS5 proxy on given host + port
     --socks5-basic  Enable username/password auth for SOCKS5 proxies
     --socks5-gssapi Enable GSS-API auth for SOCKS5 proxies
     --socks5-gssapi-nec Compatibility with NEC SOCKS5 server
     --socks5-gssapi-service <name> SOCKS5 proxy service name for GSS-API
     --socks5-hostname <host[:port]> SOCKS5 proxy, pass host name to proxy
 -Y, --speed-limit <speed> Stop transfers slower than this
 -y, --speed-time <seconds> Trigger 'speed-limit' abort after this time
     --ssl           Try SSL/TLS
     --ssl-allow-beast Allow security flaw to improve interop
     --ssl-no-revoke Disable cert revocation checks (WinSSL)
     --ssl-reqd      Require SSL/TLS
 -2, --sslv2         Use SSLv2
 -3, --sslv3         Use SSLv3
     --stderr        Where to redirect stderr
     --suppress-connect-headers Suppress proxy CONNECT response headers
     --tcp-fastopen  Use TCP Fast Open
     --tcp-nodelay   Use the TCP_NODELAY option
 -t, --telnet-option <opt=val> Set telnet option
     --tftp-blksize <value> Set TFTP BLKSIZE option
     --tftp-no-options Do not send any TFTP options
 -z, --time-cond <time> Transfer based on a time condition
     --tls-max <VERSION> Use TLSv1.0 or greater
     --tlsauthtype <type> TLS authentication type
     --tlspassword   TLS password
     --tlsuser <name> TLS user name
 -1, --tlsv1         Use TLSv1.0 or greater
     --tlsv1.0       Use TLSv1.0
     --tlsv1.1       Use TLSv1.1
     --tlsv1.2       Use TLSv1.2
     --tlsv1.3       Use TLSv1.3
     --tr-encoding   Request compressed transfer encoding
     --trace <file>  Write a debug trace to FILE
     --trace-ascii <file> Like --trace, but without hex output
     --trace-time    Add time stamps to trace/verbose output
     --unix-socket <path> Connect through this Unix domain socket
 -T, --upload-file <file> Transfer local FILE to destination
     --url <url>     URL to work with
 -B, --use-ascii     Use ASCII/text transfer
 -u, --user <user:password> Server user and password
 -A, --user-agent <name> Send User-Agent <name> to server
 -v, --verbose       Make the operation more talkative
 -V, --version       Show version number and quit
 -w, --write-out <format> Use output FORMAT after completion
     --xattr         Store metadata in extended file attributes

关于Curl 如何使用HTTP ,官方有个文档

在HTTP 请求中,最常用的是下面几个方法:

  • GET
  • POST
  • HEAD
  • PUT

其中,Curl 方法执行约定如下

  • 默认使用的是GET方法。
  • -d 或者-F 指定为POST 方法
  • -I 指定为HEAD方法
  • -T 指定为PUT 方法

示例

1.6.1 发送一个GET 请求

curl http://example.com/file

执行完成后我们可以看到请求后返回来相应的页面源码
在这里插入图片描述

1.6.2 发送一个POST 请求

示例一:

curl -d 'name=admin&shoesize=12' http://example.com/

示例二:

curl -d name=admin -d shoesize=12 http://example.com/

示例三:

curl -d @filename http://example.com

1.6.3 发送一个DELETE

刚才默认的请求是GET 请求,我们也可以通过-X 参数指定请求的方法为DELETE

curl http://example.com/file -X DELETE

1.6.4 自定义请求头

如果自定义请求头,可以这么做

curl -H "Elevator: floor-9" http://example.com/

输出内容如下:
在这里插入图片描述
要修改User-Agent,那么输入如下命令:

curl -H "User-Agent:" http://example.com/

输出内容如下:
在这里插入图片描述

1.6.5 发送一个PUT 请求

发送一个PUT 请求使用-T 参数,命令如下:

curl -T localfile http://example.com/new/resource/file

因此-T表示PUT并告诉curl发送哪个文件,locafile 必须指定一个本地文件路径

但是POSTPUT之间的相似之处还允许您通过使用-d的常规curl POST机制来发送带有字符串的PUT,但要求它改为使用PUT:

curl -d "data to PUT" -X PUT http://example.com/new/resource/file

1.7 附录

关于参数列表如下:

VerboseHide progressextra infoWrite outputTimeout
-v-s-w “format”-O-m
–trace-ascii-o
POSTmultipartPUTHEADcustom
-d “string”-F name=value-T-I-X “METHOD”
-d @file-F name=@file
Basic authread cookieswrite cookiessend cookiesuser-agent
-u user:password-b-c-b “c=1; d=2”-A “string”
Use proxyHeaders, add/removefollow redirsgzipinsecure
-x-H “name: value”-L–compressed-k
-H “name:”

1.8 更多学习资料

  • 18
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
### 回答1: Appium Python安装配置步骤如下: 1. 安装Python环境:在官网下载Python安装包,安装完成后,将Python添加到环境变量中。 2. 安装pip:pip是Python的包管理工具,可以通过pip安装Appium Python客户端库。在命令行中输入以下命令安装pip: ``` curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py ``` 3. 安装Appium Python客户端库:在命令行中输入以下命令安装Appium Python客户端库: ``` pip install Appium-Python-Client ``` 4. 下载安装Appium:在官网下载Appium安装包,安装完成后,启动Appium。 5. 编写测试脚本:使用Appium Python客户端库编写测试脚本,连接Appium服务器,启动测试。 以上就是Appium Python安装配置的步骤,希望对你有帮助。 ### 回答2: Appium是一种流行的自动化测试框架,可以用于测试各种移动应用程序。Python作为一种热门的编程语言,可以与Appium框架无缝集成。在本文中,我们将讨论如何安装配置Python用于Appium测试。 安装Python: 在安装Python之前,您需要确保已安装适当的开发环境。在Windows上,您需要安装Visual Studio或C++ Build Tools。在macOS上,您需要安装Xcode命令行工具。建议安装Python 3.x版本,因为这是最新的稳定版本。您可以从官方网站下载Python并按照提示进行安装安装Appium-Python客户端库: 之前安装Python的时候需要确认是否安装了pip包管理器,否则需要先安装pip。可以使用以下命令在终端/命令提示符下安装Appium-Python客户端库。 pip install Appium-Python-Client 安装Appium: 在安装Appium之前,您需要安装Node.js。在Windows上,您可以从官方网站下载Windows安装程序并按照提示进行安装。在macOS上,您可以使用以下命令在终端中安装Node.js: brew install node 安装完Node.js后,您可以使用以下命令在终端/命令提示符下安装Appium: npm install -g appium 配置Appium: 在配置Appium之前,您需要确保您的测试环境与Appium服务器连接成功。您可以使用以下代码片段检查是否连接成功: from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '9' desired_caps['deviceName'] = 'Android Emulator' desired_caps['app'] = 'path/to/your/app' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) driver.quit() 以上是做个小测试,测试环境是否可以与Appium服务器连接。如果测试运行成功,则您已经成功配置了Appium测试环境。 在本文中,我们已经讨论了如何安装配置Python用于Appium测试。安装Python,Appium-Python客户端库和Appium之后,您可以开始编写Appium测试代码。Appium-Python客户端库提供了各种方法,可帮助您构建和运行自动化测试用例。 ### 回答3: Appium是一款常用的移动端自动化测试工具,Python则是一种常用的编程语言,在移动端自动化测试中也有广泛应用。下面将介绍Appium Python的安装配置流程,以帮助开发者快速搭建测试环境。 一、安装Python 1. 官网下载安装包:在Python官网(https://www.python.org/downloads/)上选择适合自己系统的安装包进行下载,Windows系统需要注意选择32位或者64位的版本。 2. 安装配置:双击安装包进行安装,并将Python安装路径添加到系统环境变量中,方便命令行调用。 二、安装Appium 1. 安装Node.js:Appium依赖于Node.js,因此需要先安装Node.js,官网下载安装包(https://nodejs.org/en/download/)进行安装即可。 2. 安装Appium:在命令行中使用npm命令(Node Package Manager)进行Appium安装,命令如下: ``` npm install -g appium ``` 3. 安装Appium-Python客户端库:使用pip安装Appium-Python客户端库,命令如下: ``` pip install Appium-Python-Client ``` 三、配置Appium 1. 配置手机:将手机连接至电脑并开启USB调试模式。 2. 配置Appium服务:启动Appium服务,在Appium客户端中选择设备、App路径、Appium版本等,若服务启动成功,则可见Appium的日志信息。 3. 编写Python脚本:设计Appium测试脚本,通过Python调用Appium提供的API实现自动化测试。 以上便是Appium Python的安装配置流程,掌握了以上操作,你就可以轻松地开发具有移动端自动化测试功能的Python应用了。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客星云

谢谢认可,希望对你的学习有帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值