SSH как альтернатива proxy

Статус
Закрыто для дальнейших ответов.

olga.armalita

Client
Регистрация
05.04.2014
Сообщения
194
Благодарностей
42
Баллы
28
Приветствую, в этой статье я расскажу вам как научить зеннопостер работать через ssh .
SSH это безопасный сетевой протокол, обеспечивающий защищенную аутентификацию, соединение и безопасную передачу данных между хостами сети, путем шифрования, проходящего через него трафика, с возможной компрессией данных. SSH так же называют альтернативой VPN.
Те кто еще не знаком с ssh наверно зададутся вопросом: а чем же ssh лучше прокси? Ответ прост, ssh в отличии от прокси не только обеспечивают более высокую анонимность, но и живут в среднем от нескольких недель, до нескольких месяцев. И при этом зачастую имеют неплохую скорость, так как она искусственно не ограничена. Таким образом купив, или добыв своими силами некоторое количество ssh , вы можете пользоваться ими довольно долгое время. Использовать ssh в зенно можно двумя способами, первый это использование ssh для смены ip в самом зенно(каждый поток в начале работы шаблона будет устанавливать соединение с ssh, а по окончании шаблона будет его разрывать), и второй это закручивание ssh туннелей на локальные порты чтобы их можно было использовать в стороннем софте.(по сути мы устанавливаем несколько соединений с ssh и оставляем их открытыми, после чего к ним можно подключиться и в зенно, и в стороннем софте как к обычному прокси по адресу 127.0.0.1:1234, где ip постоянный(localhost) а порты для каждого ssh свои. Если все равно не понятно то прочитайте статью до конца.)Дабы не растягивать статью, я не стану описывать такие пункты как создание входных настроек, списков и прочее. Если Вы начинающий пользователь то сможете найти все это и еще много чего интересного в zennowiki

Первый способ как я уже писал выше
заключается в использовании ssh в самом зенно

Для начала мы записываем ssh в файлик. Каждый ssh с новой строки. Обычно ssh имею такой вид 192.168.0.1;admin;default Где точка с запятой это разделитель, 192.168.0.1 это ip, следующим после ip идет логин (admin), и в конце пароль (default). В итого у нас получается вот такой список:
upload_2016-1-5_19-34-13.png

1. Первым делом мы помещаем все ssh в список, откуда и будем брать их по одному.

Я положил все ssh в список с одноименным названием, и взяв из него первую строку положил ее в переменную "allSSH".
2. Использовать ssh в таком виде как он есть для подключения мы не сможем, по этому следующими тремя кубиками делим ssh на ip, логин и пароль, с занесением каждого в отдельную переменную. Они нам понадобятся немного позже.

3. Для работы в многопоточном режиме нам нужно закрутить каждый ssh туннель на уникальный локальный порт. Я не стал заморачиваться с глобальными переменными и просто создал текстовый файлик с списком портов от 60000 до 65000. Если какой либо софт на вашем компьютере уже использует порт из этого диапазона, обязательно исключите этот порт из списка.

4. Сначала берем порт из списка и помещаем его в переменную "portSSH", затем заносим эту переменную в конец того же списка. Таким образом порты никогда не закончатся, а по скольку в списке их 5 тысяч, то и пересекаться они не будут.

Теперь у нас есть все что нужно для подключения к ssh.
5. А подключатся мы будем с помощью программы plink. Проверяем чтобы файлик plink.exe лежал рядом с проектом. И заносим аргументы для подключения в переменную. Я пытался передавать аргументы для plink.exe непосредственно через "запуск программы", но оно почему-то отказалось работать. Аргументы для подключения выглядят следующим образом:
-N -pw ПАРОЛЬ ЛОГИН@АЙПИАДРЕС -auto_store_key_in_cache -D127.0.0.1:УНИКАЛЬНЫЙ ПОРТ

6. Теперь пора подключаться к ssh, с помощью кода на C# который передаст аргументы файлу plink.exe, который в свою очередь установит соединение с ssh, и закрутит его на локальный порт.

На это все потребуется некоторое время, по этому мы ставим паузу в 10 сек.
7. По окончании паузы подключаемся к локальному socks5 прокси.

8. И проверяем его работоспособность. Для этого я выбрал сайт wikipedia.

Как вы видите я чекаю прокси поиском текста в теле страницы. Если текст найден значит ssh рабочий, и можно выполнять проект дальше. Или сохранять рабочие ssh в другой файлик, таким образом у нас получится чекер ssh.
9. Но в конце шаблона обязательно нужно добавить другой C# код

который разорвет ssh туннель, и завершит процесс plink.exe. Если вы этого не сделаете то у вас будет висеть куча не завершенных процессов plink.exe, и соответственно порты использованные в них будут недоступны для новых подключений.
Паузу в 0 с поставил чтобы проект не завершался с ошибкой когда ssh не рабочий и соединение с ним не устанавливается вообще. По тому что в этом случае C# код не может завершить процесс plink.exe, так как он завершается сам еще раньше.

Второй способ дает возможность использовать ssh и в стороннем софте

На самом деле этот способ более предпочтителен и для работы с самим зенно, так как он значительно быстрее.
Суть его проста, мы устанавливаем соединение с ssh и закручиваем его на уникальный локальный порт, после чего записываем данные локального прокси для подключения в файлик, и используем эти данные в стороннем софте или в другом проекте зенно, подключаясь к ним как к обычному socks5 прокси.

Первым кубиком у нас будет стоять "if" который будет определять что мы хотим сделать, создать ssh туннели или завершить ранее созданные.

Далее повторяем с первого по седьмой пункты предыдущего способа. Но в конце если ssh рабочий то записываем в выходной файл ip и порт локального прокси а не сам ssh.
Результатом работы этого шаблона будет множество процессов plink.exe в диспетчере задач(по одному на каждый ssh), и файлик с локальными прокси такого плана

которые можно использовать и в стороннем софте, и в других шаблонах зенно как socks5 прокси.
Если же в входных настройках вы выберете "убиваем прокси" то код C#

завершит все процессы plink.exe, что разорвет все установленные ssh туннели.
При использовании этого способа я устанавливал одновременно 150-200 соединений, без видимой негативной нагрузки на систему.


p.s. Шаблон работает в многопоточном режиме благодаря C# коду который отслеживает для каждого процесса plink.exe его pid(уникальный номер процесса), и в конце шаблона завершает именно тот процесс который нужно.

Файл plink.exe можно и нужно скачать на этой странице, (а тут прямая ссылка)
Оригинальный plink не подойдет по тому что он не понимает аргумент auto_store_key_in_cache, очень нужный нам для автоматического подключения.

В создании шаблона для работы с ssh неоценимую помощь оказали пользователи darkdiver и LexxWork , за что им огромное человеческое спасибо.
 
Тема статьи
Другое
Номер конкурса статей
Четвертый конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование модератором:

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43
знал бы раньше - не покупал бы масстунелер ) Спасибо. Только вот еще не описан момент, в котором сторонний софт(допустим онлайн сервис или просто ваша программа на сервере) обращается к вашему прокси , но оказывается что прокся не рабочая. Это может произойти, если ваш провайдер не выделил вам внешний ip , а повесил вас за NAT https://ru.wikipedia.org/wiki/NAT
 

olga.armalita

Client
Регистрация
05.04.2014
Сообщения
194
Благодарностей
42
Баллы
28
знал бы раньше - не покупал бы масстунелер ) Спасибо. Только вот еще не описан момент, в котором сторонний софт(допустим онлайн сервис или просто ваша программа на сервере) обращается к вашему прокси , но оказывается что прокся не рабочая. Это может произойти, если ваш провайдер не выделил вам внешний ip , а повесил вас за NAT https://ru.wikipedia.org/wiki/NAT
К счастью у меня статический ip, по этому я с такими проблемами не сталкивался.
Но Вам большое спасибо за информацию, уверен она спасет пользователям с серыми ip много нервов:-)
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
Ну вот спалил тему :-)
Смущает только одно...
https://smuxi.im/issues/show/218 - тут вес plink 800kb оригинальный весит 300kb, а как я слышал очень давно по инету гуляет версия с трояном который всю инфу сливает куда не надо :(
 

olga.armalita

Client
Регистрация
05.04.2014
Сообщения
194
Благодарностей
42
Баллы
28
Проблема в том что оригинальный plink не понимает команды auto_store_key_in_cache, без которой подключение к ssh в автоматическом режиме не получается(здесь как раз можно о этом почитать https://smuxi.im/issues/show/218). По крайней мере я другого варианта не нашел.
Вирустотал утверждает что этот файл не менялся с 2010 года. Поверьте, если бы в нем был троян то он спалился бы уже давно, но файл 0 / 54.
https://www.virustotal.com/ru/file/d1d1f2dcd667efe6397e56130af79fa19b70fd99f36ea7cd8e2bf15aad505e60/analysis/1447246555/
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 117
Баллы
113
спасибо за полезную статью..
 

AlisaZ

Client
Регистрация
17.09.2014
Сообщения
159
Благодарностей
174
Баллы
43
Статья фурор 2015 и в догонку тоже волнует вот этот вопрос

у меня провайдер жмот и режит трафик безбожно, очень многие ресы недоступны, а платные прокси вообще не работают :cm:
вот как этот злосчастный НАТ обходить, помимо смены провайдера, так как альтернативы пока нет и не предвидится
 

botovod

Client
Регистрация
04.04.2014
Сообщения
170
Благодарностей
126
Баллы
43
Спасибо за полезную и подробную статью, сама тема не нова и больше плюсов насобирал бы кто сделал бы мануал по добыче этих SSH
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Получается работает в один поток?)
 

olga.armalita

Client
Регистрация
05.04.2014
Сообщения
194
Благодарностей
42
Баллы
28
Получается работает в один поток?)
p.s. Шаблон работает в многопоточном режиме благодаря C# коду который отслеживает для каждого процесса plink.exe его pid(уникальный номер процесса), и в конце шаблона завершает именно тот процесс который нужно.
работаем в многопоточном режиме без проблем
 
Последнее редактирование:

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
Проблема в том что оригинальный plink не понимает команды auto_store_key_in_cache, без которой подключение к ssh в автоматическом режиме не получается(здесь как раз можно о этом почитать https://smuxi.im/issues/show/218). По крайней мере я другого варианта не нашел.
Плохо искали :-)
Делается все в 2 захода...
1. echo.exe y | plink.exe .... exit
2. повторный запуск плинка

К стате попробуйте может в 1 получится мне было лень ковырять...
 
  • Спасибо
Реакции: svaminar

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
ага плохо
а какая защита чтоб не рвались сесии через 60 сек неактивности
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
К стате сколько жрет оперативы не_оригинальный plink?
 
  • Спасибо
Реакции: Radzhab
Регистрация
03.12.2012
Сообщения
187
Благодарностей
90
Баллы
28
Наконец-то хоть кто сделал внятный шаблон с ssh. Люто бешено плюсую.
 
  • Спасибо
Реакции: olga.armalita

olga.armalita

Client
Регистрация
05.04.2014
Сообщения
194
Благодарностей
42
Баллы
28
К стате сколько жрет оперативы не_оригинальный plink?


итого около 5,4 мб.
а какая защита чтоб не рвались сесии через 60 сек неактивности
? у меня сесси никогда не рвались. Только что 20 мин провисела и хоть бы хны.
К стате попробуйте может в 1 получится мне было лень ковырять...
В один у меня не получилось. А вот про двойной заход действительно нигде информации не видел.
 
Последнее редактирование:

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
поясните. Чем это лучше работы с прокси? И где брать SSH? Легально :-)
 
  • Спасибо
Реакции: LightWood

Danny

Client
Регистрация
29.09.2014
Сообщения
711
Благодарностей
154
Баллы
43
Если брать тестовый период для VPS, то SSH будет работать только во время тестового периода?
Или 1 раз взял тестовый период, получил SSH и можешь им потом пользоваться сколько захочешь (после окончания тестового периода)?
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
данни а подумать логически.
Канешно не будет
 
  • Спасибо
Реакции: Danny

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Если есть свои впс, то легче уже сразу прокси на них поднять.
 

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
379
Баллы
63
ага ага
Ты зае... поднимать прокси скажем на 100 тестовых впс каждение 7 дней.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Устал чистить тему, поэтому закрываю. Оставляю только главную статью, в которой показан принцип связки ZennoPoster с работой по SSH. Он пригодится тем, кто хочет использовать свои собственные сервера.
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 730
Баллы
113
поясните. Чем это лучше работы с прокси? И где брать SSH?
Да элементарно все:
Берем практически любой облачный хостинг, где есть оплата за час.
Azure, AWS, DigitalOcean
из русских vscale.io или flops.ru например
Берем везде минимальные тарифы, получается что-то от 0,30 до 1 рубля в час, нагрузки ssh никакой практически не дает, хватит любых минимальных тарифов на Linux
У Azure вообще поминутная тарификация и 10000 рублей на месяц триальных есть.
У них у всех есть API, которое через POST и GET прекрасно автоматизируется или библиотеки для .NET есть
Алгоритм действий такой:
1. Создаем виртуальную машину через API указываем логин и пароль.
2. По готовности, виртуалку вам сразу выдают со включенным SSH
3. Работаем через нее как через socks5
4. По завершению работы удаляем виртуалку.

Редкие задачи требуют времени больше часа. Так что за разумную плату вы получаете новый IP, т.к. ДЦ у облачных провайдеров много, получаете еще IP и в нужном вам регионе.
Так что дешевых SSH тонны!
 
Статус
Закрыто для дальнейших ответов.

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)