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

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

Ну с «неограниченностью» я конечно загнул. Ограничение в любом случае будет, но оно зависит от ресурсов компьютера или сервера, на котором будут запускаться прокси. Речь в статье пойдет о такой штуке как 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 всех запущенных прокси.

На сайте отсутствует реклама

Автор не получает прямой выгоды. Если считаете что материал полезен, поддержите проект

Номер карты

Заранее спасибо!

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

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

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

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

Ваш адрес email не будет опубликован.