Форум сайта python.su
0
Необходимо написать простой HTTP-клиента для получения главной страницы сайта, используя сокет.
Установил openserver и пробую получить исходники главной страницы.
import socket HOST = '127.0.0.1' PORT = 80 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.send(b"Hello! \n") # без него соединение просто закрывается data = s.recv(1024) print(data.decode("utf-8")) s.close()
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Cannot process request!</title> <link rev="made" href="mailto:%5bno%20address%20given%5d" /> <style type="text/css"><!--/*--><![CDATA[/*><!--*/ body { color: #000000; background-color: #FFFFFF; } a:link { color: #0000CC; } p, address {margin-left: 3em;} span {font-size: smaller;} /*]]>*/--></style> </head> <body> <h1>Cannot process request!</h1> <p> The server does not support the action requested by the browser. </p> <p> If you think this is a server error, please contact the <a href="mailto:%5bno%20address%20given%5d">webmaster</a>.
Отредактировано Moi5es (Дек. 23, 2014 10:15:41)
Офлайн
88
Раз Вы пишите HTTP-клиент, Вам придётся соблюдать HTTP протокол.
https://ru.wikipedia.org/wiki/HTTP
Офлайн
0
Заменил в соответствии с требованиями протокола HTTP
import socket HOST = '127.0.0.1' PORT = 80 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.send(b''' GET / HTTP/1.0 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5 Accept: text/html Connection: close \r\n\r\n''') data = s.recv(1024) print(data.decode("utf-8")) s.close()

HTTP/1.1 200 OK Date: Tue, 23 Dec 2014 09:11:32 GMT Server: Apache/2.4.10 (Win32) Last-Modified: Tue, 14 Feb 2012 17:53:45 GMT ETag: "0-4b8f046bc47a5" Accept-Ranges: bytes Content-Length: 0 Connection: close Content-Type: text/html
Отредактировано Moi5es (Дек. 23, 2014 13:45:56)
Офлайн
0
Запрос в netcat тоже отдает пустое тело. Проверил на запросе ya.ru, всё работает. Скорее всего дело в openserver.
Благодарю всех, кто откликнулся.
Отредактировано Moi5es (Дек. 25, 2014 07:46:00)
Офлайн