反复得到“302 Not found”套接字

时间:2016-01-04 04:27:13

标签: python sockets networking ip

当我运行以下代码时

import socket
import urlparse
import re
import os

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.connect(("www.google.co.in", 80))
s.send("GET /?gfe_rd=cr&gws_rd=cr HTTP/1.0\r\n\r\n")
data = s.recv(100000)
print data
s.close()

我从谷歌获得的回复始终如下

HTTP/1.0 302 Found
Location: http://www.google.co.in/?gfe_rd=cr&gws_rd=cr
Cache-Control: private
Content-Type: text/html; charset=UTF-8
P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
Date: Mon, 04 Jan 2016 04:30:53 GMT
Server: gws
Content-Length: 245
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: NID=75=chG9KySsUncl-1elqXhs56m7cNHxFvFwNR5pZoavIwRJ2PpoGlm5RbShdsiF7udrTgwZgG-eRo4oQqA0RhbfwtExcxUGk88F_R2TNV9vi4XKhWSB9ihhcqulYTtg9xGkagSDPdFfmw; expires=Tue, 05-Jul-2016 04:30:53 GMT; path=/; domain=.google.com; HttpOnly

<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;gws_rd=cr">here</A>.
</BODY></HTML>

我理解这是因为我没有遵循重定向。有人可以解释我应该连接哪个网址,以便我不会收到此错误,或者我该如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您收到的是302 Found,而不是Not Found

302响应代码的含义是重定向,浏览器会默默/自动执行此操作,并加载新的重定向页面。

正如您在回复正文中所看到的那样

The document has moved
<A HREF="http://www.google.co.in/?gfe_rd=cr&amp;gws_rd=cr">here</A>.

将您的请求指向此网址,您不应再收到302回复,请确保将&amp;替换为&

s.send("GET /?gfe_rd=cr&gws_rd=cr HTTP/1.0\r\n\r\n")

请查看this link以自动浏览这些网址,这样您就不需要手动执行此操作。

例如,在Python 3.5中:

import html
html.unescape('/?gfe_rd=cr&amp;gws_rd=cr')  # /?gfe_rd=cr&gws_rd=cr