Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

02.04.2009, 16:22
|
|
Постоянный
Регистрация: 24.12.2007
Сообщений: 574
Провел на форуме: 3186852
Репутация:
316
|
|
Сообщение от t4Nk
mes += "Connection: close\r\n\r\n"
sock.send(mes)
надо пойти поспать=\
но все равно не пашет(
|
|
|

02.04.2009, 16:34
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
PHP код:
# -*- coding: cp1251 -*-
import sys,socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'
mes = "GET /index.html HTTP/1.1\r\n"\
"Host: www.google.ru\r\n\r\n"
s.send(mes)
result = s.recv(10240)
s.close()
print result
проверил, все работает!
з.ы.: если тебе нужна полностью страница, и не нужен header ответа, используй urllib:
PHP код:
import urllib
page = urllib.urlopen("http://google.ru").read()
print page
|
|
|

02.04.2009, 16:46
|
|
Постоянный
Регистрация: 24.12.2007
Сообщений: 574
Провел на форуме: 3186852
Репутация:
316
|
|
спасибо,вот конечный результат забирает всю страницу, а не только первые 1024 байта
PHP код:
# -*- coding: cp1251 -*-
import sys,socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'
mes = "GET / HTTP/1.1\r\n"
mes += "Host: www.google.ru\r\n"
mes += "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n"
mes += "Accept: text/html\r\n"
mes += "Connection: close\r\n\r\n"
s.send(mes)
buff = ""
result = ""
while 1:
buff = s.recv(1024)
if buff:
result += buff
else:
break
s.close()
print result
|
|
|

02.04.2009, 16:52
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
Vid0k, в некоторих случаях твой скрипт будет виснуть.
вот:
PHP код:
def sendit(sock,packet='',timeout=1):
import time
if (packet!=''):
self.sock.send(packet)
self.sock.setblocking(0)
total_data=[]
data=''
begin=time.time()
while 1:
if total_data and time.time()-begin>timeout:
break
elif time.time()-begin>timeout*2:
break
try:
data=self.sock.recv(1024)
if data:
total_data.append(data)
begin=time.time()
else:
time.sleep(0)
except:
pass
return ''.join(total_data)
и испозуеш:
PHP код:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
result = sendit(s,"GET / HTTP/1.1\r\nHost: google.ru\r\n\r\n")
print result
з.ы.: повторяюсь, но для получения страници лучше использовать уже готовую urllib
|
|
|

02.04.2009, 17:34
|
|
Познавший АНТИЧАТ
Регистрация: 07.01.2007
Сообщений: 1,263
Провел на форуме: 3326855
Репутация:
702
|
|
Vid0k, с twill твой код будет выглядеть так:
go('http://google.com')
show()
Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)
|
|
|

02.04.2009, 17:37
|
|
Постоянный
Регистрация: 24.12.2007
Сообщений: 574
Провел на форуме: 3186852
Репутация:
316
|
|
Сообщение от inlanger
Vid0k, с twill твой код будет выглядеть так:
Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)
не спасибо...
я люблю велосипеды... 
|
|
|

02.04.2009, 17:44
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от Vid0k
спасибо,вот конечный результат забирает всю страницу, а не только первые 1024 байта
PHP код:
# -*- coding: cp1251 -*-
import sys,socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.ru", 80))
print '+'
mes = "GET / HTTP/1.1\r\n"
mes += "Host: www.google.ru\r\n"
mes += "User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5\r\n"
mes += "Accept: text/html\r\n"
mes += "Connection: close\r\n\r\n"
s.send(mes)
buff = ""
result = ""
while 1:
buff = s.recv(1024)
if buff:
result += buff
else:
break
s.close()
print result
Честно говоря, я не могу понять, зачем нужно было изьебыватся, чтоб получить страницу именно на сокетах, мне интересно, что ты подразумевал под "Активная работа с заголовками" между прочим, модификацию заголовков я делаю через urllib2, я ж написал, что сокеты целесообразно использовать только в одном случае - если необходимо ПОЛУЧИТЬ ЧАСТЬ заголовка.Примером такого изьебоса я могу считать свой сканнер директорий([NDC] 12 BDS), который получает 12 байт из заголовка и обрывает соединение, в этом случае целесообразно было писать его на сокетах (ИМХО). Во всех остальных случаях я не вижу необходимости юзать сокеты на питоне, отлично справляются и стандартные либы. В качестве исключения могу сказать только то, что над server-side приложениями я не трудился и как они будут себя вести при огромных нагрузках я не знаю, с клиентской частью у мну ни разу никаких напрягов не было. Но в пользу server-side приложений говорят Twisted, Django, Plone, Turbo Gears, и т.д.
|
|
|

02.04.2009, 17:47
|
|
Постоянный
Регистрация: 12.06.2008
Сообщений: 654
Провел на форуме: 4512757
Репутация:
973
|
|
Сообщение от inlanger
Vid0k, с twill твой код будет выглядеть так:
Это - переход на страницу и вывод полученной страницы на экран(а можно и в переменную)
Просто - это не путь тру кодеров, труъ кодеры настолько суровые, что даже веб-приложения пишут на ассемблере
|
|
|

02.04.2009, 18:05
|
|
Постоянный
Регистрация: 24.12.2007
Сообщений: 574
Провел на форуме: 3186852
Репутация:
316
|
|
Честно говоря, я не могу понять, зачем нужно было изьебыватся, чтоб получить страницу именно на сокетах, мне интересно, что ты подразумевал под "Активная работа с заголовками" между прочим, модификацию заголовков я делаю через urllib2, я ж написал, что сокеты целесообразно использовать только в одном случае - если необходимо ПОЛУЧИТЬ ЧАСТЬ заголовка.Примером такого изьебоса я могу считать свой сканнер директорий([NDC] 12 BDS), который получает 12 байт из заголовка и обрывает соединение, в этом случае целесообразно было писать его на сокетах (ИМХО). Во всех остальных случаях я не вижу необходимости юзать сокеты на питоне, отлично справляются и стандартные либы.
чо ты так напрягся?!  расслабься, ну захотелось мне!)
нравится тебе твоя урл.либ вот и пиши с ней задоровье
|
|
|

02.04.2009, 18:17
|
|
Постоянный
Регистрация: 24.12.2007
Сообщений: 574
Провел на форуме: 3186852
Репутация:
316
|
|
а и еще вопрос
при выводе строки в консоль нужно чтобы она была на месте
в перле и под виндами работало "\r" но под никсами и в питоне все время переводит на новую строчку(
как с этим бороться?
чо придется все время чистить консоль?(
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|