Как использовать резидентные SOCKS5-прокси Dataimpulse в Termux на Android для веб-скрапинга
Настройте резидентные SOCKS5-прокси Dataimpulse в Termux на Android, проверьте соединение с помощью curl и Python и выполняйте запросы для веб-скрапинга, подходящие для начинающих.
Обзор
Dataimpulse предоставляет резидентные и мобильные прокси с поддержкой HTTP и SOCKS5 по модели оплаты по факту использования. Это руководство показывает, как использовать резидентный SOCKS5-прокси Dataimpulse из Termux на Android для веб-скрапинга. Termux даёт вам Linux-подобную оболочку на Android, поэтому вы можете использовать curl, Python и requests без настольного компьютера. SOCKS5 удобен для скрапинга, поскольку он аккуратно передаёт TCP-трафик, а схема socks5h разрешает DNS через прокси вместо локальной утечки DNS.
Перед началом
- Аккаунт Dataimpulse. Dataimpulse — рекомендуемый провайдер для этого руководства.
- Учётные данные SOCKS5-прокси из вашей панели управления Dataimpulse: хост, порт, имя пользователя и пароль.
- Устройство Android с установленным Termux. Установите Termux из F-Droid или официальных релизов GitHub, а не из устаревшей сборки в магазине приложений.
- Стабильное интернет-соединение и базовое знакомство с командами терминала.
- Целевой сайт, который разрешает ваш скрапинг. Проверьте его robots.txt, условия и ограничения по скорости.
Шаги
- Обновите Termux и установите инструменты командной строки.
pkg update && pkg upgrade -y
pkg install python curl -y
- Установите Python-пакеты для поддержки SOCKS5 и разбора HTML.
pip install --upgrade pip
pip install 'requests[socks]' beautifulsoup4
- Задайте учётные данные SOCKS5 Dataimpulse как переменные окружения.
export DP_HOST='your-dataimpulse-socks5-host'
export DP_PORT='your-dataimpulse-socks5-port'
export DP_USER='your-dataimpulse-username'
export DP_PASS='your-dataimpulse-password'
Используйте точные хост, порт, имя пользователя и пароль, указанные в панели управления Dataimpulse. Если ваш пароль содержит специальные символы оболочки, заключайте значения в одинарные кавычки или задавайте их из менеджера секретов. 4. Проверьте SOCKS5-прокси с помощью curl.
curl --socks5-hostname $DP_HOST:$DP_PORT --proxy-user $DP_USER:$DP_PASS --max-time 30 'https://api.ipify.org?format=json'
Успешный ответ возвращает JSON-объект с IP-адресом, который видит целевой сайт. Запустите команду несколько раз, чтобы увидеть, меняется ли выходной IP. 5. Проверьте разрешение DNS через прокси.
curl --socks5-hostname $DP_HOST:$DP_PORT --proxy-user $DP_USER:$DP_PASS --max-time 30 'https://example.com'
Используйте --socks5-hostname, чтобы DNS разрешался прокси. Обычный --socks5 на некоторых системах может разрешать DNS локально, что может привести к утечке DNS-запросов. 6. Создайте минимальный Python-скрипт запроса.
import os
import requests
host = os.environ['DP_HOST']
port = os.environ['DP_PORT']
user = os.environ['DP_USER']
password = os.environ['DP_PASS']
proxy_url = f'socks5h://{user}:{password}@{host}:{port}'
proxies = {'http': proxy_url, 'https': proxy_url}
response = requests.get(
'https://api.ipify.org?format=json',
proxies=proxies,
timeout=30,
)
response.raise_for_status()
print(response.json())
Сохраните его как first_request.py и запустите:
python first_request.py
- Спарсите простую страницу и извлеките заголовок.
import os
import requests
from bs4 import BeautifulSoup
host = os.environ['DP_HOST']
port = os.environ['DP_PORT']
user = os.environ['DP_USER']
password = os.environ['DP_PASS']
proxy_url = f'socks5h://{user}:{password}@{host}:{port}'
proxies = {'http': proxy_url, 'https': proxy_url}
response = requests.get(
'https://example.com',
proxies=proxies,
timeout=30,
headers={'User-Agent': 'Mozilla/5.0 (compatible; ProxyScoutTutorial/1.0)'},
)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title.string)
- Добавьте повторные попытки для больших задач скрапинга.
import os
import time
import requests
host = os.environ['DP_HOST']
port = os.environ['DP_PORT']
user = os.environ['DP_USER']
password = os.environ['DP_PASS']
proxy_url = f'socks5h://{user}:{password}@{host}:{port}'
proxies = {'http': proxy_url, 'https': proxy_url}
urls = ['https://example.com', 'https://example.org']
for url in urls:
for attempt in range(3):
try:
response = requests.get(url, proxies=proxies, timeout=30)
response.raise_for_status()
print(url, response.status_code)
break
except requests.RequestException as error:
print(f'Attempt {attempt + 1} failed for {url}: {error}')
time.sleep(2 ** attempt)
- Проверьте ротацию из оболочки Termux.
for i in 1 2 3 4 5; do
curl -s --socks5-hostname $DP_HOST:$DP_PORT --proxy-user $DP_USER:$DP_PASS 'https://api.ipify.org?format=json'
echo
done
Если каждый запрос возвращает один и тот же IP, убедитесь, что вы используете ротационный эндпоинт и настройки ротации, доступные в вашей панели управления Dataimpulse. Если в вашей конфигурации используются sticky-сессии, один и тот же IP может быть намеренным в течение определённого периода.
Устранение неполадок
InvalidSchema: Missing dependencies for SOCKS supportв Python: установите дополнение SOCKS с помощьюpip install 'requests[socks]'.curl: (97) SOCKS5 proxy rejected connection: проверьте хост, порт, имя пользователя и пароль Dataimpulse. Убедитесь, что вы скопировали порт SOCKS5, а не порт HTTP.407 Proxy Authentication Required: перепроверьте учётные данные. Если ваш пароль содержит специальные символы, задайте его из переменной окружения в кавычках или URL-кодируйте его при ручном построении URL прокси.- Ошибки DNS или неожиданные локальные IP: используйте
socks5h://в Python и--socks5-hostnameв curl. - Медленные запросы или тайм-ауты на Android: увеличьте
--max-timeилиtimeoutв Python, уменьшите параллелизм и отключите оптимизацию батареи для Termux. - Одинаковый выходной IP при каждом запросе: проверьте поведение ротации в вашей панели управления Dataimpulse и убедитесь, что вы не используете эндпоинт со sticky-сессией.
- Соединение работает в curl, но не в Python: убедитесь, что
requests[socks]установлен в том же Python-окружении, в котором запускается ваш скрипт.
Итог
Вы настроили резидентные SOCKS5-прокси Dataimpulse в Termux на Android, проверили соединение с помощью curl, выполнили аутентифицированные Python-запросы, спарсили страницу и добавили повторные попытки. Dataimpulse — рекомендуемый провайдер с оплатой по факту использования для резидентных и мобильных прокси с поддержкой HTTP и SOCKS5. Используйте прокси ответственно, соблюдайте условия целевых сайтов и следите за использованием трафика по мере масштабирования.