Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Питон и socksipy
цитата
19/05/12 в 11:00
 dreamnoob
Появилась необходимость использовать соксы в скрипте. Для реализации этой задачи склонился к использованию как я понимаю популярной либы socksipy. Ниже привожу ответственный кусок кода:


import socks // грузим либу
socksfile=open('socks.txt')  // открываем соксофайл
sockslist=socksfile.read().split('\n') // читаем в список
s=sockslist.pop(0)  // берём сокс из списка
sockshost= s[:s.find(':')]  // вычленяем хост
socksport=int(s[s.find(':')+1:]) // вычленяем порт
sk=socks.socksocket()
sk.setproxy(socks.PROXY_TYPE_SOCKS4, sockshost, socksport)
sk.connect((sockshost, socksport))

Проблема состоит в том, что последняя строка постоянно вылетает с еррором:

Никак не могу понять, что за объект в строку не конвертиться и в чём косяк. Есть тут знатоки?
цитата
19/05/12 в 11:41
 StrangeInscription
Для начала не совсем понятно зачем ты через прокси коннектишься к самому этому прокси, поэтому попробуй
sk.connect(("нужный хост" 80))
цитата
19/05/12 в 11:49
 dreamnoob
StrangeInscription писал:
Для начала не совсем понятно зачем ты через прокси коннектишься к самому этому прокси

В аргументах метода connect да, ступил, подставив вместо целевого хоста и порта снова прокси facepalm.gif Пофиксил, не помогло, однако.
цитата
19/05/12 в 12:31
 StrangeInscription
Давай тогда посмотрим на первые несколько строк socks.txt, мало ли что.
цитата
19/05/12 в 12:44
 dreamnoob
93.99.5.245:1080
146.185.22.84:1080
83.91.86.26:9100
83.175.206.115:1080
79.129.17.76:1080

Начекал паблика пока для пробы)
цитата
19/05/12 в 13:13
 StrangeInscription
Даже не знаю чем помочь, у меня всё работает с данными параметрами.

Такого сообщения как у тебя так поймать и не удалось. Создаётся впечатление, что резолвер (gethostbyname) возвращает какую-то ошибку.
Попробуй заменить в socks.py
                except socket.error:
                        # It's a DNS name. Check where it should be resolved.
                        if self.__proxy[3]==True:
                                ipaddr = "\x00\x00\x00\x01"
                                rmtrslv = True
                        else:
                                ipaddr = socket.inet_aton(socket.gethostbyname(destaddr))
                # Construct the request packet
                req = "\x04\x01" + struct.pack(">H",destport) + ipaddr

на
                except socket.error:
                        # It's a DNS name. Check where it should be resolved.
                        if self.__proxy[3]==True:
                                ipaddr = "\x00\x00\x00\x01"
                                rmtrslv = True
                        else:
                                ipaddr = socket.inet_aton(socket.gethostbyname(destaddr))
                print(ipaddr)
                print(destport)
                # Construct the request packet
                req = "\x04\x01" + struct.pack(">H",destport) + ipaddr

и посмотреть вывод.

С другой стороны, попробуй взять более свежую socksipy хттп://code google com/p/socksipy-branch (проверял её с питоном 3.2.3 под windows и 2.6 под linux).
цитата
19/05/12 в 14:03
 dreamnoob
StrangeInscription писал:
и посмотреть вывод.

Добавил вывод, вот что получилось:


StrangeInscription писал:
резолвер (gethostbyname) возвращает какую-то ошибку

Вывод результата gethostbyname тоже посмотрел, возвращает строку с айпи без проблем.
цитата
19/05/12 в 14:34
 StrangeInscription
Тогда давай продолжим извращения:
                except socket.error:
                        # It's a DNS name. Check where it should be resolved.
                        ipaddr = socket.inet_aton(socket.gethostbyname(destaddr))
                print(ipaddr)
                print(destport)
                # Construct the request packet
                req = "\x04\x01" + struct.pack(">H",destport) + ipaddr

Пока что-нибудь из заклинателей змей не пришёл icon_smile.gif
цитата
19/05/12 в 14:58
 dreamnoob
Попробовал, теперь print(ipaddr) выводит b'\xd8\xb5?' и по-прежнему вылетает
цитата
19/05/12 в 15:17
 StrangeInscription
dreamnoob:
Стукни куда-нибудь, так проще будет.
цитата
22/05/12 в 11:33
 exolon
А socksipy под второй питон вроде icon_rolleyes.gif
цитата
22/05/12 в 12:50
 StrangeInscription

Есть форк под третий.
цитата
25/05/12 в 15:25
 exolon
StrangeInscription: будь добр, ткни пожалуйста в ссылку icon_wink.gif

UPD: вижу icon_smile.gif http://code.google.com/p/socksipy-branch/ facepalm.gif


Эта страница в полной версии