我怎样才能设置curl请求头?
我怎么会传递curl
请求头中的多个值?
多次使用-H
参数:
curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com
有时更改标题是不够的,有些网站也检查引用者:
curl -v \ -H 'Host: restapi.some-site.com' \ -H 'Connection: keep-alive' \ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \ -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' \ -e localhost \ -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36' \ 'http://restapi.some-site.com/getsomething?argument=value&argument2=value'
在这个例子中,referer(curl中的-e或–referer)是'localhost'。
要在curl请求中传递多个头文件,只需在curl命令中添加-H
或--header
。
例
//Simplified $ curl -v -H 'header1:val' -H 'header2:val' URL //Explanatory $ curl -v -H 'Connection: keep-alive' -H 'Content-Type: application/json' http://www.example.com
走得更远
对于标准的HTTP头域,如User-Agent , Cookie , Host ,实际上有另一种设置方法。 curl命令提供了用于设置这些头部字段的指定选项:
- -A(或–user-agent):设置“User-Agent”字段。
- -b(或–cookie):设置“Cookie”字段。
- -e(或–referer):设置“Referer”字段。
- -H(或 – 标题):设置“标题”字段
例如,以下两个命令是等价的。 他们两个都改变HTTP头中的“User-Agent”string。
$ curl -v -H "Content-Type: application/json" -H "User-Agent: UserAgentString" http://www.example.com $ curl -v -H "Content-Type: application/json" -A "UserAgentString" http://www.example.com