Raspberry Pi - как отличный прокси

Ссылка на оригинал - https://wiringbits.net/wiringbits/2020/06/07/a-raspberry-pi-as-a-decent-resident…, автор публикации - Alexis Hernandez

Один из наших проектов (cazadescuentos.net) использует скрапер для сканирования нескольких интернет-магазинов в поисках скидок. В последнее время мы начали поддерживать некоторые магазины, которые блокируют запросы, поступающие из общих облачных провайдеров (например, AWS, DigitalOcean и т. п.), Если вам интересно, эти веб-сайты - BestBuy и Costco Mexico.

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

В итоге, мы создали собственный прокси-сервер, который сейчас работает на старой модели Raspberry Pi B. Стоит добавить, что это оказалось не такой простой задачей, как мы ожидали, особенно с учетом наличия туннеля SSH (подробнее об этом читайте ниже).

ИП

Попробуйте этот способ

Если вы хотите перейти непосредственно к коду или поиграть с ним, мы открыли исходный код http-proxy.

Я чувствую себя достаточно смелым, чтобы позволить вам даже попробовать прокси, не запустив его, в надежде, что я не получу DoS-атаку. Но, скорее всего, мне придется удалить доступ, как только кто-то начнет злоупотреблять им.

Эта команда отправляет моему Pi запрос https://wiringbits.net, отправив пользовательский заголовок DNT: 1:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"url": "https://wiringbits.net", "headers": { "DNT": "1" }}' \
  "https://cazadescuentos.net/proxy"

Как это работает

Подход, на самом деле, очень прост:

  • Raspberry Pi запускает простой HTTP-прокси.
  • Pi подключен к Интернету на эксклюзивном маршрутизаторе.
  • Поскольку Pi не так легко получить доступ из Интернета, он открывает SSH-туннель к серверу, который подключится к прокси, обслуживаемому Pi.
  • Наш скрапер вызывает прокси, как если бы он работал на localhost'е.

Простой поток прокси

О безопасности

Соображения безопасности:

  • Не афишируйте свой прокси: злоумышленники смогут взаимодействовать с вашими домашними устройствами.
  • В идеале, выставляйте прокси в изолированной сети, отличной от той, к которой вы подключаете домашние устройства.

Подводные камни

В итоге, я потратил больше времени, чем ожидалось, настроив необходимые конфиги, чтобы прокси-сервер работал надежно. Самая большая проблема была связана с туннелем SSH.

Реальный проект включает в себя сервис systemd для поддержания открытого туннеля с необходимыми настройками.

Команда туннеля:

/usr/bin/ssh -nNT -R 9999:localhost:9000 -o ConnectTimeout=10 -o ExitOnForwardFailure=yes -o ServerAliveInterval=180 [email protected]

Самое важное:

  • ExitOnForwardFailure=yes вынуждает ssh завершать работу при сбое в соединении, вместо того, чтобы продолжать работу, пока туннель не работает.
  • ServerAliveInterval=180 продолжает отправлять пинг на сервер, чтобы он не закрывал соединение из-за неактивности.

Будущее

Вероятно, если прокси-трафик значительно возрастет, он будет заблокирован некоторыми веб-сайтами.

Более масштабируемый подход - распределить эти прокси-устройства в разных точках, что предотвращает трюк с SSH-туннелем.

Возможный подход заключается в использовании службы очередей, например, AWS SQS / Kafka / и проч., для отправки запросов на очистку веб-сайта, в то время как прокси-устройства могут бороться за использование следующего запроса.  Если одно из них не выполнит задание, можно попробовать другое. 

Вам вовсе не нужен Raspberry Pi, вы можете создать простое приложение для Android, предназначенное для той же цели.

В любом случае, прокси работает уже пару месяцев, и я надеюсь, что стабильность сохранится на какое-то время.

Добавить комментарий

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Не нашли ответ на свой вопрос? Возможно, вы найдете решение проблемы на нашем канале в Youtube! Здесь мы собрали небольшие, но эффективные инструкции. Смотрите и подписывайтесь на наш youtube-канал!

Смотреть на Youtube

Руководства и обзоры

1 Что нужно восстановить?

Видео

MP4, AVI и HD видео хранятся на телефоне и / или по ошибке удаляются вместе с фотографиями и другими медиафайлами.

Контакты

Номера телефонов друзей и знакомых из приложения «Контакты Android», журналы вызовов; Восстановление SIM-карты.

Фото

Удалены файлы JPG / PNG из Галереи Android; фото, загруженные на мобильный, файлы повреждены после восстановления.

Смс и сообщения

Чаты WhatsApp и Facebook, текстовые сообщения в соцсетях, информация на сим-карте

2 Где пропали файлы?

На sd-карте

Фотографии и документы хранятся на SD-картах. Часто на них случайно удаляются файлы

На телефоне

Программы для восстановления не распознают внутреннее хранилище телефона как диск, но есть другие решения.

На USB флешке

Эти небольшие устройства хранения данных часто выходят из строя или на них появляются ошибки чтения.

На HDD или SSD

Несмотря на то, что настольные платформы становятся все менее популярными, проблема потери файлов всегда оставалась.