2010-06-19 2 views
1

Я заинтересован в создании HTTP Banner Grabber, но когда я подключаюсь к серверу на порту 80, и я что-то посылаю (например, «HEAD/HTTP/1.1»), recv ничего мне не возвращает например, когда я это делаю, скажем, netcat.HTTP Banner Grabbing with Python

Как бы я это сделал?

Спасибо!

ответ

2

Попробуйте использовать urllib2 module.

>>> data = urllib2.urlopen('http://www.example.com').read() 
>>> print data 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<HTML> 
<HEAD> 
    <META http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <TITLE>Example Web Page</TITLE> 
</HEAD> 
<body> 
<p>You have reached this web page by typing &quot;example.com&quot;, 
&quot;example.net&quot;, 
    or &quot;example.org&quot; into your web browser.</p> 
<p>These domain names are reserved for use in documentation and are not available 
    for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
    2606</a>, Section 3.</p> 
</BODY> 
</HTML> 

>>> 

Спрашивая примеры, вы можете пропустить более мелкие пункты. Чтобы просмотреть заголовок content-type:

>>> stream = urllib2.urlopen('http://www.example.com') 
>>> stream.headers['content-type'] 
'text/html; charset=UTF-8' 
>>> data = stream.read() 
>>> print data[:100] 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<HTML> 
<HEAD> 
    <META http-equiv= 
>>> 
+0

Как я буду искать в ответе? Если я хочу, чтобы мой скрипт мог идентифицировать, допустим, тип содержимого и распечатать его? – Kaep

+0

См. Пример типа контента (дополнение). На самом деле, вам нужно взглянуть на BeautifulSoup - http://stackoverflow.com/questions/tagged/beautifulsoup – gimel

2

Вы отправляете «\ r \ n \ r \ n», чтобы указать конец запроса? Если вы этого не сделаете, сервер все еще ждет остальную часть запроса.

+0

Я попробую это быстро. Минуточку. – Kaep

+0

Спасибо, это сработало! – Kaep

+0

Как я буду искать в ответе? Если я хочу, чтобы мой скрипт мог идентифицировать, допустим, тип содержимого и распечатать его? – Kaep