Назначение формы остаётся в запросе, а прокси — в конфигурации соединения. Прокси не нуждается в специальном поле формы с нужным URL, если вы не используете веб-прокси-интерфейс конкретного сайта.

Для Net::HTTP в Ruby явный HTTP-прокси можно указать при создании клиента:

require 'net/http'

uri = URI('https://example.com/form')
http = Net::HTTP.new(uri.hostname, uri.port,
                     '203.0.113.10', 8080)
http.use_ssl = true
http.open_timeout = 5
http.read_timeout = 10
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data('message' => 'hello')
response = http.start { |session| session.request(request) }

Прокси приведён для примера; HTTP-кандидаты для разрешённых тестов публичных форм доступны в списке HTTP-прокси. Конечную точку формы нужно заменить сервисом, предназначенным принимать отправку. Документация прокси Net::HTTP также описывает учётные данные прокси и настройки, полученные из окружения.

Прочитайте ответ, прежде чем винить прокси

Сервер, отклоняющий форму, может вернуть ошибку HTTP после того, как маршрут через прокси сработал правильно. Проверьте статус ответа и требования назначения: метод, тип содержимого, поля формы, файлы cookie и любой токен запроса.

Запрос аутентификации прокси исходит от прокси. Вход в приложение или отклонённая форма относятся к назначению. Держите их учётные данные раздельно. Добавление пароля назначения в конфигурацию прокси не может удовлетворить вход на назначении.

Правила заголовков пересылки Squid — ещё один возможный источник путаницы. Их серверная политика отделена от построения корректного POST Ruby. Не меняйте правила заголовков общего прокси только потому, что форма один раз не сработала.

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

Похожие статьи