为什么我的python套接字会出现404错误?

时间:2015-02-07 16:47:47

标签: python sockets python-2.7 networking web

socket = socket(AF_INET, SOCK_STREAM)
socket.connect(("www.groupon.com", 80))
file = socket.makefile('r', 0)
file.write("GET " + "/coupons"  + " HTTP/1.0\n\nHost: " + "www.groupon.com" + "\n\nConnection: close\n\n")
buff = file.readlines()

服务器响应

  

获取https://www.groupon.com/coupons   HTTP / 1.0 HTTP / 1.0 400错误请求服务器:AkamaiGHost Mime-版本:   1.0内容类型:text / html内容长度:200到期:星期六,2015年2月7日17:49:11 GMT日期:星期六,07二月2015 17:49:11 GMT连接:   靠近

     

网址无效

无效   网址

请求的网址“/优惠券”无效。

  参考#9.bf254b8.1423331351.64ef899d   

这也发生在其他网站上:我只能从索引页面获得回复。

我的插座有什么问题?

1 个答案:

答案 0 :(得分:0)

  

我的插座有什么问题?

无。您使用过低级别的工具来解决问题。

测试用例:

import socket

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect(("www.groupon.com", 80))
file = socket.makefile('r', 0)
file.write("GET " + "/coupons"  + "HTTP/1.0\r\nHost: " + "www.groupon.com" + "\r\nConnection: close\r\n")
buf = file.readlines()
print buf

响应:

['HTTP/1.0 408 Request Time-out\r\n', 'Server: AkamaiGHost\r\n', 'Mime-Version: 1.0\r\n', 'Date: Sat, 07 Feb 2015 19:17:53 GMT\r\n', 'Content-Type: text/html\r\n', 'Content-Length: 218\r\n', 'Expires: Sat, 07 Feb 2015 19:17:53 GMT\r\n', '\r\n', '<HTML><HEAD>\n', '<TITLE>Request Timeout</TITLE>\n', '</HEAD><BODY>\n', '<H1>Request Timeout</H1>\n', "The server timed out while waiting for the browser's request.<P>\n", 'Reference&#32;&#35;2&#46;63d77a5c&#46;1423336673&#46;0\n', '</BODY></HTML>\n']

使用普通浏览器访问http://www.groupon.com/coupons会将您重定向到httpS://...。错误消息“服务器在等待浏览器请求时超时”表示Web应用程序等待一些未发生的客户端触发事件(可能是通过JavaScript触发了某些请求)。无论如何,您的低级方法不仅仅与浏览器的行为类似。浏览器执行复杂的操作,HTTP协议的实现只是其中的一部分。