Как использовать Net :: SMTP через прокси SOCKS? - PullRequest
3 голосов
/ 09 мая 2019

Я делаю это в Ruby 2.6:

require 'net/smtp'
Net::SMTP.start('smtp.gmail.com', 457).do |smtp|
  smtp.helo('gmail.com')
end

Теперь я хочу сделать то же самое, но через прокси SOCKS4 / 5.Я ничего не могу найти в документации.

1 Ответ

1 голос
/ 09 мая 2019

Если посмотреть на источник Net :: SMTP , может показаться, что он не имеет встроенной поддержки прокси-серверов SOCKS.

Пара идей:

  1. Ваш интерпретатор Ruby создан с поддержкой SOCKS? Если да, то вы сможете использовать SOCKSSocket class . Создайте подкласс Net :: SMTP и переопределите tcp_socket метод , чтобы использовать SOCKSSocket вместо TCPSocket.
  2. Используйте ruby-proxifier gem (хотя он выглядит довольно старым).
  3. Повторно внедрите SOCKSSocket в чистом Ruby (подключение через SOCKS4 не слишком сложно, SOCKS5 немного сложнее, см. этот пример для справки) или найдите существующую реализацию (хотя у меня нет ' не смог найти).
...