Ruby Net::HTTP POST isteğini proxy üzerinden gönderin
Ruby HTTP bağlantısını açık bir proxy ile yapılandırın, ardından form verilerini hedefe gönderin.
Formun hedefini istekte, proxy'yi ise bağlantı yapılandırmasında tutun. Belirli bir sitenin web-proxy arayüzünü kullanmıyorsanız, proxy'nin istediğiniz URL'yi taşıyan özel bir form alanına ihtiyacı yoktur.
Ruby'nin Net::HTTP'si için istemci oluşturulurken açık bir HTTP proxy belirtilebilir:
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 yalnızca örnektir; izin verilen genel form testleri için HTTP adayları HTTP proxy listesinde bulunur. Form uç noktası, gönderimi kabul etmek üzere tasarlanmış bir hizmetle değiştirilmelidir. Net::HTTP'nin proxy belgeleri ayrıca proxy kimlik bilgilerini ve ortamdan türetilen proxy ayarlarını açıklar.
Proxy'yi suçlamadan önce yanıtı okuyun
Formu reddeden bir sunucu, proxy üzerinden giden yol doğru çalıştıktan sonra bir HTTP hatası üretebilir. Yanıt durumunu ve hedefin gereksinimlerini kontrol edin: yöntem, içerik türü, form alanları, çerezler ve varsa istek belirteci.
Proxy kimlik doğrulama meydan okuması proxy'den gelir. Uygulamaya giriş veya reddedilen form hedefe aittir. Kimlik bilgilerini ayrı tutun. Hedef parolasını proxy yapılandırmasına eklemek hedefin girişini karşılayamaz.
Squid'in iletme başlığı kuralları bir başka olası kafa karışıklığı kaynağıdır. Sunucu tarafındaki politikaları geçerli bir Ruby POST oluşturmaktan ayrıdır. Form bir kez başarısız oldu diye paylaşılan bir proxy'nin başlık kurallarını değiştirmeyin.
Yeniden denemelerde ilk gönderimin zaten işlenmiş olabileceğini düşünün. Kaybolan bir yanıt, POST'un uygulamaya hiç ulaşmadığının kanıtı değildir.