Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2010 15:11:42

Di_MikyL
От:
Зарегистрирован: 2010-10-28
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Соединение через прокси с ICQ-серваком.

Привет всем!
У меня проблемка…. Значит, пробую конектиться с прокси, а через него с ICQ-серваком. После присоединения, прокси вроде-бы пишет, что связь есть и я Connection. Но при попытке подкоректировать ответ с сервака, идет обрыв. Вот код:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib
import httplib
import time
import datetime
import socket

TLV_UIN=0x01
TLV_PWD=0x02
TLV_REDIR=0x05
TLV_COOKIE=0x06
CLIENT_='AOL Instant Messenger'
s=''
chain=''
seq=''
sequ=0
runn=0
total_send=0
total_recv=0
xor_table=[0xf3, 0x26, 0x81, 0xc4, 0x39, 0x86, 0xdb, 0x92, 0x71, 0xa3, 0xb9, 0xe6, 0x53, 0x7a, 0x95, 0x7c]

proxyserver = '93.166.121.106'
proxyport = '8118'
host = 'login.icq.com'
port = '5109'
st="CONNECT login.icq.com:5190/ HTTP/1.0\n\r\n"
uin = "свой UIN"
password = "свой пароль"
proxyadress=(proxyserver,int(proxyport))

print "Идет подключение к прокси-серверу..."
print "***********************************"
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((proxyadress))
print "Подключение выполнено!"
print "*********************"
print "Посылка запроса к прокси-серверу для связи с ICQ-сервером ..."
print "*************************************************************"

try:
s.send(st)
print "Запрос отправлен успешно!"
print "************************"
print "Попытка получения данных с сервера..."
print "************************************"

try:
d=s.recv(1024)
d=d.split(" ")
print "Данные успешно получены! - ",d
print "***********************************************************************"

td=d[len(d)-1]#Здесь берем концовку ответа от прокси, в котором содеожится ответ от icq
td=td.split("*")
td=td[1]
td2=td[0:5]
td3="\x2a"+td2#Немного подкорректировали и получили нужный нам ответ
print "Вывод данных с сервера: -" , td3
print "***********************************************************************"
print "Подождите..."
print "************"

try:
buf=get_PLAP(td3)
print 'Успешно! - '+u
print "********"
print "Посылка 'Привета'..."
print "********************"

try:
send_HELO()
print 'Успешно!'
print "*******"
print 'Пожалуйста, подождите...Идет получение пакета...'
print "************************"

try:
buf=get_PLAP("i")
print "Пакет получен Успешно!"
print "Проверка пароля..."
print "******************"

try:
tlv_chain=proc_tlv(buf)
cookie=tlv_chain[TLV_COOKIE]
h,p = string.split(tlv_chain[TLV_REDIR],':')
print "password ok"
print "Получено: ", h,p

except:
print "ERROR! Пароль неверный!"
s.close()
del s
print "Программа закрыта!"

except:
print "ERROR в получении пакета!"
s.close()
del s
print "Программа закрыта!"

except:
print "ERROR в отправке ПРИВЕТА!"
s.close()
del s
print "Программа закрыта!"

except:
print "Неизвестная ERROR!"
s.close()
del s
print "Программа закрыта!"

except:
print "ERROR в получении данных!"
s.close()
del s
print "Программа закрыта!"

except:
print "ERROR!!! Запрос не отправлен!"
s.close()
del s
print "Программа закрыта!"

except:
print "ERRROR с подключением!"
s.close()
del s
print "Программа закрыта!"
console:
Идет подключение к прокси-серверу...
***********************************
Подключение выполнено!
*********************
Посылка запроса к прокси-серверу для связи с ICQ-сервером ...
*************************************************************
Запрос отправлен успешно!
************************
Попытка получения данных с сервера...
************************************
Данные успешно получены! - ['HTTP/1.0', '200', 'Connection', 'established\r\nProxy-Agent:', 'Privoxy/3.0.15\r\n\r\n']
***********************************************************************
ERROR в получении данных!
Программа закрыта!
может кто-нибудь знает, в чем дело? Помогите, буду очень рад! =)



Отредактировано (Окт. 28, 2010 15:16:34)

Офлайн

#2 Окт. 28, 2010 17:24:08

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Соединение через прокси с ICQ-серваком.

Раз, два, три… СЕМЬ ВЛОЖЕННЫХ “TRY”!!! Мой череп трещит по швам… Мой мозг вытекает из носа и ушей…



Офлайн

#3 Окт. 28, 2010 17:48:34

Di_MikyL
От:
Зарегистрирован: 2010-10-28
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Соединение через прокси с ICQ-серваком.

ZZZ
Раз, два, три… СЕМЬ ВЛОЖЕННЫХ “TRY”!!! Мой череп трещит по швам… Мой мозг вытекает из носа и ушей…
Ну если ты там еще не помер, может расскажешь, как можно напрямую соединиться с айсикью-серваком, авторизоваться там, и потом отправить сообщение по введенному УИНу???



Офлайн

#4 Окт. 28, 2010 17:55:33

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Соединение через прокси с ICQ-серваком.

Понятия не имею! Ведь ты перехватил все эксцепшены и вместо нормальной инфы вывел какую-то лабуду.



Офлайн

#5 Окт. 29, 2010 15:46:52

Di_MikyL
От:
Зарегистрирован: 2010-10-28
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Соединение через прокси с ICQ-серваком.

ZZZ
Понятия не имею! Ведь ты перехватил все эксцепшены и вместо нормальной инфы вывел какую-то лабуду.
че те не нравиться?? Наоборот, все перехвачено и нормально закоменчено, и можно отловить ошибку! и она, кстате , в 3-ем try!



Офлайн

#6 Окт. 30, 2010 08:11:34

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Соединение через прокси с ICQ-серваком.

Это, конечно, замечательно, но КАКАЯ это ошибка? Может просто такого объекта нет?
Запомни раз и навсегда, исключения нужно перехватывать только там, где это нужно и только те исключения, которые могут появится там в ходе работы программы, а никак не все и везде.
А до тех пор, пока ты не увидишь нормальную ошибку, я буду стебаться даже не заглядывая в то, что там в третьем try, а ты – гадать на кофейной гуще.



Офлайн

#7 Окт. 30, 2010 12:59:27

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Соединение через прокси с ICQ-серваком.

Тупо убери все эксцепты и выложи стектрейс ошибки.



Офлайн

#8 Окт. 30, 2010 19:00:03

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Соединение через прокси с ICQ-серваком.

Ну типа того… Только я хотел, чтобы он сам догадался.



Офлайн

#9 Окт. 30, 2010 21:25:25

asilyator
От:
Зарегистрирован: 2010-10-24
Сообщения: 276
Репутация: +  -2  -
Профиль   Отправить e-mail  

Соединение через прокси с ICQ-серваком.

ZZZ, что ты имел в виду этим

ZZZ
Запомни раз и навсегда, исключения нужно перехватывать только там, где это нужно
Что except без параметров надо пихать осторожно и дальше что?



Офлайн

#10 Окт. 30, 2010 22:50:31

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Соединение через прокси с ICQ-серваком.

try вообще надо пихать осторожно. Вот Di_MikyL, например, потерял ошибку из-за этой неосторожности.
try создан не для того, чтобы ловить все возможные ошибки, а для обработки конкретных, в общем-то штатных, ситуаций. Вот, например, разрыв сокета при падении сети… С одной стороны это чп а с другой вполне себе реалии жизни, которые надо обработать. При этом надо сделать это так, чтобы туда случайно не попали ошибки по обработке полученной информации, иначе можно будет повесится в поисках траблы. Т.е. в блок try-except/finaly вполне корректно впихнуть одну строчку c recv и сокета и поймать только socket.error и ни что иное.

P.S. Flat is better than nested.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version