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.