【发布时间】:2018-03-08 18:56:21
【问题描述】:
我用运行 curl www.mywebsite.com 时可以解析的正确网站替换了 mywebsite。这些是我正在使用的选项:
curl -X 'GET https://www.mywebsite.com/Web2/PDF.aspx?page=1' \
-H 'Host: www.mywebsite.org' \
-H 'Connection: keep-alive' \
-H 'Upgrade-Insecure-Requests: 1' \
-A 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36 OPR/51.0.2830.26' \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' \
-H 'DNT: 1' \
-e 'the-referer' \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Accept-Language: en-US,en;q=0.9' \
-b '_the-cookies'
当我尝试在 OSX 终端中运行它时,会发生以下情况:
$ curl -X 'GET https://www.mywebsite.com/Web2/PDF.aspx?page=1' \
-H 'Host: www.mywebsite.org' \
-H 'Connection: keep-alive' \
-H 'Upgrade-Insecure-Requests: 1' \
-A 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36 OPR/51.0.2830.26' \
curl: (6) Could not resolve host:
Mac-mini-3:~ myuser$
上面写着:
curl: (6) 无法解析主机:
为什么会这样?当我在终端中使用 \ 转义序列时,为什么它试图运行命令?在所有选项都通过之前,它不应该运行任何命令。
【问题讨论】:
-
旁注:默认情况下,您使用 curl 而不明确说明要使用哪种请求方法。如果你只是传入一个 HTTP URL,比如 curl example.com,它将使用 GET。如果您使用 -d 或 -F curl 将使用 POST,-I 将导致 HEAD,-T 将使其成为 PUT。如果出于某种原因您对 curl 为您所做的这些默认选择不满意,您可以通过指定 -X [WHATEVER] 来覆盖这些请求方法。这样,您可以通过 curl -X DELETE [URL] 发送 DELETE。
-
HTTP 客户端使用 Accept 标头告诉服务器他们将接受哪些内容类型。然后服务器将发送回一个响应,其中将包含一个 Content-Type 标头,告诉客户端返回的内容的实际内容类型是什么。但是,您可能已经注意到,HTTP 请求也可以包含 Content-Type 标头。为什么?好吧,考虑一下 POST 或 PUT 请求。 webmasters.stackexchange.com/questions/31212/…
-
HTTP referer 是一个 HTTP 标头字段,用于标识链接到所请求资源的网页地址(即 URI 或 IRI)。在最常见的情况下,这意味着当用户在 Web 浏览器中单击超链接时,浏览器会向保存目标网页的服务器发送请求。该请求包含referer 字段,该字段指示用户访问的最后一页(他们单击链接的页面)。
-
HTTP cookie 是从网站发送并在用户浏览时由用户的网络浏览器存储在用户计算机上的一小段数据。 Cookie 旨在成为网站记住状态信息(例如在线商店的购物车中添加的项目)的可靠机制。服务器在其响应标头中发送以下内容以设置 cookie 字段:Set-Cookie:name=value。如果设置了 cookie,则浏览器在其请求标头中发送以下内容:Cookie:name=value.
-
为什么所有浏览器的用户代理都以“Mozilla/”开头?因为用户代理欺骗。各种 Web 浏览器产品的流行程度在整个 Web 的历史中各不相同,这影响了网站的设计,以至于网站有时被设计为仅适用于特定浏览器,而不是根据统一的标准。网站通常包含检测浏览器版本的代码,以根据收到的用户代理字符串调整发送的页面设计。因此,各种浏览器都具有欺骗其标识以强制执行某些服务器端内容的功能。