Tim*_*nin 3 user-agent curl google-chrome request
某些带有方括号的 URL 不适用于 CURL,但适用于 Chrome 和 Firefox。
例如此网址:https://rdtrkr.com/mg.php? voluum_id=d51b17bc-c537-4f3e-9879-2e373341ae5a&widget_id={widget_id}&campaign_id={campaign_id}&teaser_id={teaser_id}&geo={geo}&img=guy18 .jpg&txt=german&lp=de&click_price={click_price}&click_id={click_id}&{click_id}在 Chrome 和 Firefox 中可以正常工作,但使用 CURL 调用时会出现 404 错误。
curl \
-H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36" \
-v "https://rdtrkr.com/mg.php?voluum_id=d51b17bc-c537-4f3e-9879-2e373341ae5a&widget_id={widget_id}&campaign_id={campaign_id}&teaser_id={teaser_id}&geo={geo}&img=guy18.jpg&txt=german&lp=de&click_price={click_price}&click_id={click_id}&{click_id}"
Run Code Online (Sandbox Code Playgroud)
产生结果:
< HTTP/2 404
< server: nginx
< date: Thu, 13 Dec 2018 16:53:45 GMT
< content-type: text/html; charset=UTF-8
< content-length: 0
Run Code Online (Sandbox Code Playgroud)
但是使用“保留日志”模式下的 Chrome 开发工具,我有:
CURL 收到 404 而不是 302 重定向。这是否与 CURL 可能是 URL 编码括号有关?我不知道这里出了什么问题。
ps:我不是示例中使用的网站的所有者。
使用此标志(来自man curl):
-g/--globoff
This option switches off the "URL globbing parser". When you set this option, you can
specify URLs that contain the letters {}[] without having them being interpreted by curl
itself. Note that these letters are not normal legal URL contents but they should be
encoded according to the URI standard.
Run Code Online (Sandbox Code Playgroud)
URL 中的大括号是不安全的。cURL(与 Google Chrome 不同)会尝试帮您一个忙,并自动对 URL 进行编码。
换句话说,它转换{为%7B和}到&7D。
为了防止这种行为,您可以使用传递查询字符串参数-d。由于-d将请求更改为 POST,因此您还需要使用-G来强制请求为 GET。
所以而不是做
curl "http://example.com?param1=xxx¶m2=yyy"
Run Code Online (Sandbox Code Playgroud)
你可以做
curl "http://example.com" -G -d "param1=xxx¶m2=yyy"
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,由于某种原因,您所定位的网络服务器仍将返回 404,除非您提供Accept-Language标头:
curl -v "http://rdtrkr.com/mg.php" \
-G -d "voluum_id=d51b17bc-c537-4f3e-9879-2e373341ae5a&widget_id={widget_id}&campaign_id={campaign_id}&teaser_id={teaser_id}&geo={geo}&img=guy18.jpg&txt=german&lp=de&click_price={click_price}&click_id={click_id}&{click_id}" \
-H "Accept-Language: en-US,en;q=0.9,fr;q=0.8,ru;q=0.7,es;q=0.6"
Run Code Online (Sandbox Code Playgroud)
给出
* Trying 34.192.193.118...
* Connected to rdtrkr.com (34.192.193.118) port 80 (#0)
> GET /mg.php?voluum_id=d51b17bc-c537-4f3e-9879-2e373341ae5a&widget_id={widget_id}&campaign_id={campaign_id}&teaser_id={teaser_id}&geo={geo}&img=guy18.jpg&txt=german&lp=de&click_price={click_price}&click_id={click_id}&{click_id} HTTP/1.1
> Host: rdtrkr.com
> User-Agent: curl/7.47.0
> Accept: */*
> Accept-Language: en-US,en;q=0.9,fr;q=0.8,ru;q=0.7,es;q=0.6
>
< HTTP/1.1 302 Found
< Server: nginx
< Date: Thu, 13 Dec 2018 17:39:18 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Connection: keep-alive
< Location: https://rotronica-premarity.com/d51b17bc-c537-4f3e-9879-2e373341ae5a?widget_id={widget_id}&campaign_id={campaign_id}&teaser_id={teaser_id}&geo={geo}&img=guy18.jpg&txt=german&lp=de&click_price={click_price}&click_id={click_id}
<
* Connection #0 to host rdtrkr.com left intact
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10405 次 |
| 最近记录: |