สร้าง proxy อย่างง่าย


9

ทำพร็อกซีเซิร์ฟเวอร์สั้นที่สุด

ข้อมูลจำเพาะอินพุต / เอาต์พุต

ลูกค้า:

  • อินพุต: หมายเลขพอร์ต (จำนวนเต็ม 32- บิต) (,) หรือ (ช่องว่าง) URL (ดูกรณีทดสอบ)
  • เอาท์พุท: ที่มา HTML ของ URL

เซิร์ฟเวอร์:

  • อินพุต: พอร์ตเพื่อฟัง (จำนวนเต็ม 32 บิต)
  • เอาท์พุท: RECเมื่อได้รับข้อมูลจากลูกค้าตกลงเมื่อเสร็จสิ้นการส่งแหล่ง html ไปยังลูกค้า

กฎระเบียบ

  • คุณอาจจะทำให้ทั้งโปรแกรมที่สมบูรณ์หรือฟังก์ชั่นในการแปลภาษา
  • การป้อนข้อมูลจะได้รับการผ่านstdinหรือให้เป็นข้อโต้แย้ง
  • รหัสของคุณต้องใช้กับกรณีทดสอบที่กำหนดเท่านั้น (มากกว่านั้นเป็นตัวเลือกน้อยกว่านั้นไม่ถูกต้อง)
  • ผลลัพธ์ของไคลเอ็นต์จะต้องเหมือนกับสิ่งที่คุณได้รับเมื่อคุณ "ดูแหล่งที่มา" จากเบราว์เซอร์
  • เซิร์ฟเวอร์อาจจบการทำงานหลังจากคำขอที่จัดการแต่ละครั้ง (เช่นไม่ต้องเป็นแบบถาวร / daemon)
  • ( แก้ไข ) ห้ามมิให้ป้อนข้อมูล / เอาต์พุตอื่นใดนอกเหนือจากที่ระบุ

กรณีทดสอบ (อินพุตลูกค้า)

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

โดยที่ N ฉันเป็นจำนวนเต็มแบบสุ่มระหว่าง 1 ถึง 2048


เซิร์ฟเวอร์ต้องใช้ซ้ำได้หรือไม่? หรือเป็นพร็อกซี one-shot ได้หรือไม่
Nemo157

@Nemo: คุณหมายถึงอะไรนำมาใช้ซ้ำได้? (แต่ฉันคิดว่าคำตอบคือ "ใช่มันสามารถเป็นแบบนัดเดียว")
Eelvex

@Nemo: ใช่มันก็โอเคถ้าเซิร์ฟเวอร์ออกหลังจากคำขอที่มีการจัดการดี
Eelvex

คำตอบ:


4

ZSH - 57 + 42 ตัวอักษร

เซิร์ฟเวอร์:

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

ลูกค้า:

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

การใช้งาน:

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"

เป็นเวลานานแล้วที่ฉันใช้ zsh ครั้งล่าสุด แต่คุณไม่สามารถกำจัดเครื่องหมายคำพูดทั้งหมด (จำเป็นสำหรับการทุบตี) เมื่อใช้เชลล์นั้น?
PleaseStand

@idealmachine: สิ่งที่อยู่ในบรรทัดที่สองของลูกค้าที่ฉันคิดว่ามีความจำเป็นฉันแค่ดึงส่วนท้ายกลับจากการค้นหา StackExchange อีกอันฉันไม่แน่ใจดูเหมือนว่าจะทำงานโดยไม่มีพวกเขา ฉันไม่ได้ทำสคริปต์มากใน zsh
Nemo157

ใช่ม้วนงอจะเงียบ (กฎที่ปรับปรุงใหม่เพื่อชี้แจง)
Eelvex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.