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 да, ступил, подставив вместо целевого хоста и порта снова прокси
Пофиксил, не помогло, однако.
цитата
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
Пока что-нибудь из заклинателей змей не пришёл
цитата
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 под второй питон вроде
цитата
22/05/12 в 12:50
StrangeInscription
Есть форк под третий.
цитата
25/05/12 в 15:25
exolon
StrangeInscription:
будь добр, ткни пожалуйста в ссылку
UPD
: вижу
http://code.google.com/p/socksipy-branch/
Новая тема
Ответить
Эта страница в полной версии