Pošlji POST Ruby Net::HTTP skozi proxy
Nastavite povezavo HTTP Ruby z izrecnim proxyjem in nato pošljite podatke obrazca na cilj.
Cilj obrazca naj bo v zahtevi, proxy pa v konfiguraciji povezave. Proxy ne potrebuje posebnega polja obrazca z želenim URL-jem, razen če uporabljate spletni proxy vmesnik določenega spletnega mesta.
Za Net::HTTP v Ruby je mogoče izrecni HTTP proxy navesti ob ustvarjanju odjemalca:
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 samo ponazoritev; kandidati HTTP za dovoljene teste javnih obrazcev so na voljo na seznamu proxyjev HTTP. Končno točko obrazca je treba zamenjati s storitvijo, namenjeno sprejemanju pošiljanja. Dokumentacija proxyja Net::HTTP opisuje tudi poverilnice proxyja in nastavitve, pridobljene iz okolja.
Preberite odgovor, preden krivite proxy
Strežnik, ki zavrne obrazec, lahko vrne napako HTTP, potem ko je pot skozi proxy pravilno delovala. Preverite stanje odgovora in zahteve cilja: metodo, vrsto vsebine, polja obrazca, piškotke in morebitni žeton zahteve.
Izziv preverjanja pristnosti proxyja prihaja od proxyja. Prijava v aplikacijo ali zavrnjen obrazec pripadata cilju. Poverilnice hranite ločeno. Dodajanje gesla cilja v konfiguracijo proxyja ne more zadostiti prijavi na cilju.
Pravila glave posredovanja Squid so še en možen vir zmede. Njihova politika na strani strežnika je ločena od sestavljanja veljavnega POST v Ruby. Ne spreminjajte pravil glave skupnega proxyja samo zato, ker je obrazec enkrat spodletel.
Pri ponovnih poskusih upoštevajte, da je bilo prvo pošiljanje morda že obdelano. Izgubljen odgovor ni dokaz, da POST nikoli ni prispel do aplikacije.