Odeslání POST z Ruby Net::HTTP přes proxy
Nakonfigurujte HTTP připojení Ruby s explicitní proxy a poté odešlete data formuláře na cíl.
Ponechte cíl formuláře v požadavku a proxy v konfiguraci připojení. Proxy nepotřebuje zvláštní pole formuláře s URL, kterou chcete, pokud nepoužíváte web-proxy rozhraní konkrétního webu.
Pro Net::HTTP v Ruby lze explicitní HTTP proxy zadat při vytváření klienta:
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) }
Proxy je ilustrativní; HTTP kandidáti pro povolené testy veřejných formulářů jsou k dispozici v seznamu HTTP proxy. Koncový bod formuláře je třeba nahradit službou určenou k přijímání odeslání. Dokumentace proxy v Net::HTTP také popisuje přihlašovací údaje proxy a nastavení proxy odvozená z prostředí.
Přečtěte si odpověď, než obviníte proxy
Server, který formulář odmítne, může vrátit chybu HTTP poté, co trasa přes proxy fungovala správně. Zkontrolujte stav odpovědi a požadavky cíle: metodu, typ obsahu, pole formuláře, cookies a případný token požadavku.
Výzva k ověření proxy pochází z proxy. Přihlášení do aplikace nebo odmítnutý formulář patří cíli. Uchovávejte jejich přihlašovací údaje odděleně. Přidání hesla cíle do konfigurace proxy nemůže splnit přihlášení cíle.
Pravidla pro předávací hlavičky Squid jsou dalším možným zdrojem zmatku. Jejich politika na straně serveru je oddělená od sestavení platného POST v Ruby. Neměňte pravidla hlaviček sdílené proxy jen proto, že formulář jednou selhal.
U opakovaných pokusů zvažte, zda první odeslání už nemohlo být zpracováno. Ztracená odpověď není důkazem, že POST nikdy nedorazil do aplikace.