Skip to content
Beginner / 3 min read

Как использовать резидентные SOCKS5-прокси Dataimpulse в Termux на Android для веб-скрапинга

Настройте резидентные SOCKS5-прокси Dataimpulse в Termux на Android, проверьте соединение с помощью curl и Python и выполняйте запросы для веб-скрапинга, подходящие для начинающих.

Linux Android SOCKS5 Веб-скрейпинг

Обзор

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, условия и ограничения по скорости.

Шаги

  1. Обновите Termux и установите инструменты командной строки.
pkg update && pkg upgrade -y
pkg install python curl -y
  1. Установите Python-пакеты для поддержки SOCKS5 и разбора HTML.
pip install --upgrade pip
pip install 'requests[socks]' beautifulsoup4
  1. Задайте учётные данные 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
  1. Спарсите простую страницу и извлеките заголовок.
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)
  1. Добавьте повторные попытки для больших задач скрапинга.
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)
  1. Проверьте ротацию из оболочки 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. Используйте прокси ответственно, соблюдайте условия целевых сайтов и следите за использованием трафика по мере масштабирования.