간단한 프록시 구축


9

가장 짧은 프록시 서버를 만드십시오.

입 / 출력 사양

고객:

  • 입력 : 포트 번호 (32 비트 정수) (,) 또는 (공백) URL (테스트 사례 참조)
  • 출력 : URL의 HTML 소스

섬기는 사람:

  • 입력 : 수신 대기 포트 (32 비트 정수)
  • 출력 : 클라이언트로부터 입력이 수신되면 REC , HTML 소스를 클라이언트로 전송이 완료 되면 OK .

규칙

  • 통역 된 언어로 완전한 프로그램 이나 기능을 만들 수 있습니다 .
  • 입력은 stdin을 통해 받거나 인수 로 제공됩니다 .
  • 코드는 주어진 테스트 사례에서만 작동해야합니다 (더 많을수록 선택적이며 덜 유효하지 않습니다).
  • 클라이언트 출력은 브라우저에서 소스를 볼 때 얻는 것과 동일해야합니다.
  • 처리 된 각 요청 후에 서버 가 종료 될 수 있습니다 (즉, 지속적 / 데몬 일 필요는 없음).
  • ( edit ) 지정된 것 이외의 다른 입력 / 출력은 금지됩니다.

테스트 사례 (클라이언트 입력)

  1. N 1 https : //.com/stackoverflow.com/
  2. N 2 http://en.wikipedia.org/wiki/ 프록시 _ 서버
  3. N 3 http://stackexchange.com/search?q=code+golf

여기서 N i 는 1에서 2048 사이의 임의의 정수입니다.


서버를 재사용 할 수 있어야합니까? 아니면 원샷 프록시가 될 수 있습니까?
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를 사용한 지 오래되었지만 쉘을 사용할 때 모든 따옴표 (bash에 필요)를 제거 할 수 없습니까?
PleaseStand

@idealmachine : 클라이언트의 두 번째 줄에있는 것이 필요하다고 생각합니다 .StackExchange 검색에서 바닥 글만 다시 가져 왔습니다. 확실하지 않은 다른 것들은 그것들없이 작동하는 것 같습니다. zsh에서는 실제로 많은 스크립팅을 수행하지 않습니다.
Nemo157

예, 말림은 조용해야합니다 (명확하게하기 위해 업데이트 된 규칙).
Eelvex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.