Basit bir proxy oluşturun


9

En kısa proxy sunucusunu yapın.

Giriş / Çıkış Özellikleri

Müşteri:

  • Giriş: bir port numarası (32 bit tam sayı) (,) veya (boşluk) bir url (test durumlarına bakın)
  • Çıktı: URL'nin html kaynağı

Sunucu:

  • Giriş: dinlenecek bağlantı noktası (32 bit tam sayı)
  • Çıktı: İstemciden girdi alındığında REC , html kaynağını istemciye göndermeyi tamamladığınızda OK .

kurallar

  • Yorumlanan bir dilde tam bir program veya işlev yapabilirsiniz .
  • Girdi stdin yoluyla alınır veya argüman olarak verilir .
  • Kodunuzun yalnızca belirtilen test senaryolarında çalışması gerekir (daha fazlası isteğe bağlıdır, daha azı geçersizdir).
  • İstemci çıktısı, bir tarayıcıdan "kaynağı görüntülediğinizde" elde ettiğinizle aynı olmalıdır.
  • Sunucu , işlenen her istekten sonra çıkabilir (yani kalıcı / arka plan programı olması gerekmez)
  • ( değiştir ) Belirtilenden başka herhangi bir girdi / çıktı yasaktır.

Test senaryoları (istemci girişleri)

  1. N 1 https://stackoverflow.com/
  2. N 2 http://en.wikipedia.org/wiki/Proxy_server
  3. N 3 http://stackexchange.com/search?q=code+golf

K burada i 1 ile 2048 arasında rasgele tamsayılardır.


Sunucunun yeniden kullanılabilir olması gerekiyor mu? Yoksa tek seferlik bir vekil olabilir mi?
Nemo157

@Nemo: Tekrar kullanılabilir ne demek istiyorsun? (ancak cevabın "evet, tek vuruş olabilir")
Eelvex

@Nemo: evet, sunucu iyi işlenmiş bir istekten sonra çıkarsa sorun olmaz.
Eelvex

Yanıtlar:


4

ZSH - 57 + 42 karakter

Sunucu:

s=$(nc -l $1)
echo REC
curl -s $s|nc 127.0.0.1 $1
echo OK

Müşteri:

echo $2|nc 127.0.0.1 $1
echo "$(nc -l $1)"

Kullanımı:

sudo zsh server.zsh 123

sudo zsh client.zsh 123 http://stackoverflow.com/
sudo zsh client.zsh 123 http://en.wikipedia.org/wiki/Proxy_server
sudo zsh client.zsh 123 "http://stackexchange.com/search?q=code+golf"

En son zsh kullandığımdan bu yana bir süre geçti, ama o kabuğu kullanırken tüm tırnaklardan (bash için gerekli) kurtulamıyor musunuz?
Lütfen

@idealmachine: Ben istemcinin ikinci satırında gerekli olduğunu düşünüyorum olanlar, ben sadece StackExchange arama altbilgi alıyordu. Diğerleri, emin değilim, onlarsız çalışıyor gibi görünüyor. Zsh'de çok fazla komut dosyası yapmıyorum.
Nemo157

Evet, kıvrılma susturulmalıdır (açıklığa kavuşturmak için kurallar güncellendi).
Eelvex
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.