c - 获取谷歌请求

标签 c sockets post browser get

我正在尝试用 C 语言实现一个简单的网络浏览器。 每当我使用

向 go​​ogle.com 发送 get 请求时
    GET / HTTP/1.1\r\n\r\n

我收到了

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.co.in/?gfe_rd=cr&ei=1wIjWPqZA6DmugSY4I-IDw
Content-Length: 261
Date: Wed, 09 Nov 2016 11:04:55 GMT

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/?gfe_rd=cr&amp;ei=1wIjWPqZA6DmugSY4I-IDw">here</A>.
</BODY></HTML>

随后我发送另一个 GET 请求

GET /?gfe_rd=cr&amp;ei=1wIjWPqZA6DmugSY4I-IDw HTTP/1.1\r\n\r\n

我收到错误代码 404 未找到。

如果不是这个,那么将我重定向到该网站的 GET 请求应该是什么。我使用 google 查找 IP 地址

char *hostname = "www.google.com";
struct hostent *he;
he = gethostbyname( hostname );

最佳答案

您请求的网址错误。

仔细查看 Location header 中给出的 URL:

http://www.google.co.in/?gfe_rd=cr&ei=1wIjWPqZA6DmugSY4I-IDw

以及 HTML 源代码中的 URL:

http://www.google.co.in/?gfe_rd=cr&amp;ei=1wIjWPqZA6DmugSY4I-IDw

您会注意到第二个稍有不同,因为 & 符号必须在 HTML 文档中编码为 &

如果您在 Location header 中使用 URL,则成功的机会更大。但是,如果服务器的行为取决于其他因素,您可能仍然会遇到问题。例如,许多网站会拒绝没有可识别的 User-Agent 请求 header 的请求。

关于c - 获取谷歌请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40505640/

相关文章:

java - 如何在按下按钮时正确关闭/启动服务器套接字JAVA

java - 需要与 Java Android Studio 中的 TCP/IP 本地托管服务器通信

php - 从 OpenLayers JavaScript 接收 PHP 中的 POST 请求

post - 网站之间的安全数据传输

c - 复制文本文件并将其粘贴到新文件 C 时遇到问题

c - 回调函数的返回类型

C fprintf 将多行写入文件?

sockets - 在 Go 中加速系统调用

php - 如何从帖子中获取数据到类(class)

代码块 : Undefined reference to myFct