Как создать неограниченное количество прокси

Как создать неограниченное количество прокси
Share on facebook
Share on twitter
Share on vk
Share on telegram
Share on whatsapp

Ну с «неограниченностью» я конечно загнул. Ограничение в любом случае будет, но оно зависит от ресурсов компьютера или сервера, на котором будут запускаться прокси. Речь в статье пойдет о такой штуке как Tor. Многие ошибочно считают что Tor это какой-то портал в даркнет. Ха-ха. Tor — это такая штуковина, которая позволяет отправлять запросы к ресурсам скрывая свой IP-адрес. Все.

Сама программа Tor не только дает возможность нам отправлять запросы с другого IP, но и позволяет менять этот IP. Это чертовски полезно когда нам нужно выполнить большое количество запросов к ресурсу, который может по своему усмотрению ограничить запросы с IP или попросту внести его в черный список или попросту в бан. Конечно в идеале ресурс не должен нас блокировать, но как мы достигнем идеала, если не поймем пределы допустимого? А этого можно достигнуть только наткнувшись на ограничения, в том числе и на блокировки по IP.

Установка Tor

Все описанное ниже выполняется в Linux, в частности, Ubuntu Server. Если у вас винда, то советую поставить виртуалбокс и на него поставить Ubuntu Server. Понимаю что для заядлых виндаводов Linux да без графической оболочки реальный вынос мозга, но если вы встали на путь познания таких вещей как Tor и тому подобного, начинайте знакомиться с командной строкой и линуксом. Если игры в основном делают под винду, то серверный софт делают в большей степени под линукс и там этим пользоваться гораздо проще и удобнее.

sudo apt install tor

После этой команды у нас появится работающий прокси. Проверить его работоспособность можно простой командой.

wget -qO - https://api.ipify.org; echo

А потом выполняем

torsocks wget -qO - https://api.ipify.org; echo

Мы получим два IP, которые должны отличаться.

Результаты проверки соединения с Tor

Ништяк! Tor у нас пашет. Проблема только в том, что он доступен у нас только внутри сервера. Иногда этого вполне достаточно, но бывает так, что нужно использовать прокси из вне. Для этого надо покопаться в настройках.

Если вам нужно управлять этим прокси, то в файле /etc/tor/torrc надо внести некоторые настройки.

Первым делом нам надо сгенерировать пароль

tor --hash-password MyPassword

Где вместо MyPassword указываем свой вариант пароля. Полученный хеш копируем и сохраняем где-нибудь. Он нам понадобится не один раз.

Открываем файл конфигурации

sudo nano /etc/tor/torrc

В самое начало вставляем

HashedControlPassword "Наш сгенерированный пароль"

Поскольку по умолчанию управляющий порт у нас 9051, то при массовом создании прокси, это может нам усложнить генерацию портов, а в дальнейшем использование прокси. Нам изначально лучше разнести эти два типа портов. Порт прокси оставим как есть, а вот порт управления сделаем другим. В файл конфигурации добавим ещё строку.

ControlPort 8150

Сохраняем, закрываем. На этом все, с настройками покончено.

Дальше кому как удобно. Мне было удобно делать все автоматически или полуавтоматически. У меня была необходимость запускать N-ое количество потоков, где каждый шарился по одноклассникам и собирал базу активных пользователей. То есть, если комп позволяет запустить 50 потоков, то под каждый поток надо запустить 50 прокси. Количество потоков может меняться и соответственно меняется и количество необходимых прокси. Поэтому был написан скрипт для тестирования, а потом я его внедрил в основную программу бота. Для запуска пачки прокси я запилил вот такой простенький скрипт.

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

import os
from stem.control import Controller
from stem import Signal

WORKERS = 20
HASH_PASS = 'HashMyPass'
MY_PASS = 'MyPass'

SOCKS_PORT = 9051
CONTROL_PORT = 8151

def renew_tor_ip( control_port ):
	with Controller.from_port(port = control_port ) as controller:
		controller.authenticate( password=MY_PASS )
		controller.signal( Signal.NEWNYM )

def renew_all_tor_ip():
	for n in range( WORKERS ):
		with Controller.from_port(port = ( CONTROL_PORT + n ) ) as controller:
			controller.authenticate( password=MY_PASS )
			controller.signal( Signal.NEWNYM )

if __name__ == "__main__":
	for n in range( WORKERS ):
		try:
			os.mkdir( '/dev/shm/tor_{port}'.format( port=( SOCKS_PORT + n ) ) )
		except:
			pass

		os.system( 'tor --RunAsDaemon 1 --CookieAuthentication 0 --HashedControlPassword "{pass}" --ControlPort {cport} --PidFile /dev/shm/tor{port}.pid --SocksPort {port} --DataDirectory /dev/shm/tor_{port}'.format( port=( SOCKS_PORT + n ), cport=( CONTROL_PORT + n ), pass=HASH_PASS ) )

Для запуска просто выполняете этот скрипт, а для смены IP в нужной программе делаете импорт и выполняете renew_tor_ip( control_port ) где control_port нужный порт. Или renew_all_tor_ip() для смены IP всех запущенных прокси.

Share on facebook
Share on twitter
Share on vk
Share on telegram
Share on whatsapp

Бидюков Денис

Эксперт по сайтам

Занимаюсь продвижением личного бренда с помощью сайта и SEO. Если Вы хотите из обычного сантехника, электрика, врача или фотографа стать востребованным и высокооплачиваемым  специалистом, то я с легкостью Вам помогу.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up