2014-04-23 5 views
2

요청을 받았을 때 단순히 웹 사이트를 미러링 한 서버를 작성 하시겠습니까? 예를 들어, NodeJS를 실행하는 http://localhost:5000을 누르면 cnn.com이 이미지와 모든 것을 렌더링합니다. 이것을 프록시라고 부릅니까?NodeJs 미러 웹 프록시

브라우저 설정 내에서 실제 프록시를 구성해야하는 것이 아니라 대신 요청을 전달하여 본질적으로 다른 사이트의 미러를 제공합니다.

+0

Node.JS (또는 HTTP 기반)는 실제로이 작업을 수행하는 가장 좋은 방법은 아닙니다. SOCKS 프록시 같은 것이 당신에게 효과가 있습니까? 그것들은 설정이 훨씬 간단하고 SSH 기능을 갖춘 서버를 넘어서는 어떤 것도 필요로하지 않습니다. –

답변

1

먼저, 귀하의 질문을 이해하도록하겠습니다.

사용자가 http://mynodeproxy.example.com으로 이동하여 브라우저에서 해당 페이지가 마치 http://cnn.com 인 것처럼 렌더링하게하고 싶습니다. 권리?

대답은 다음과 같습니다. 가능한 것으로 생각하면 그렇게 할 수 없습니다. 이것은이 접근 가능합니다 :

  1. 사용자 (모든 브라우저가 프록시 서버를 구성을 지원하는 이유는) 브라우저 설정에서 실제 프록시 서버를 구성합니다. 기존 프록시 서버를 사용하거나 노드 및 특수 응용 프로그램 논리를 사용하여 자체 프록시 서버를 작성할 수 있습니다. 하지만 요점은 사용자가 프록시 주소를 브라우저의 주소 표시 줄에 입력하지 않는다는 것입니다. 프록시 주소를 브라우저 설정 "프록시 서버"입력란에 입력하고 브라우저 주소창에 "http://cnn.com"을 입력하십시오.

  2. 네트워크에서 보내는 모든 트래픽을 제어하는 ​​경우 DNS 하이재킹이나 프록시를 통한 모든 트래픽 라우팅과 같은 호텔 스타일의 트릭을 수행 할 수 있습니다. 프록시가 CNN.com에서 얻는 HTML 다시 다른 cnn.com 리소스에 대한 하이퍼 링크를해야 할 것 때문에

그러나 이것은 사용자를함으로써 작동하지 않습니다는 브라우저의 주소 표시 줄에 통과 프록시 서버 주소를 넣어 (사이트의 다른 페이지, 이미지, 글꼴, CSS, JS 등). 이러한 링크에 포함 된 HTML 문서와 관련되지 않고 호스트 이름이 포함 된 경우 브라우저는 프록시를 무시하고 브라우저를로드하기 위해 cnn.com에 직접 연결합니다.

이제 CNN HTML에 <a href="http://cnn.com">View the CNN Home Page</a>과 같은 링크가 있다고 상상해보십시오. 사용자가 클릭하면 어떻게됩니까? 맞습니다. 프록시가 완전히 벗어나 우회합니다. 이것이 프록시 서버가 명시 적 브라우저 지원과 함께 작동하는 이유입니다.

CNN.com의 자바 스크립트가 아약스 요청 만들기, DOM에 동적으로 추가하기 등을 시작하면 초기 cnn.com 홈 페이지 HTML을 프록시 처리하고 수정하는 것만으로는 불가능합니다. 네, 매우 사소한 인위적인 웹 페이지 예를 들어 이것을 할 수는 있지만 현실적으로는 cnn.com과 같은 현대적인 인기있는 사이트는 가능하지 않습니다.

+0

모든 요청을 프록시하고 싶지 않습니다. 단지 http : // localhost : 8000이 cnn.com을 제공해야합니다. 브라우저 설정으로 구성해야하는 일반 프록시를 찾지 않고 대신 일부 사이트의 미러를 제공하도록 요청을 전달하는 방법 만 찾고 있습니다. – Verhogen

+0

그래서 "그냥 cnn.com"은 콘텐츠 전달 네트워크, YouTube 등 많은 다른 호스트의 콘텐츠를 포함하여 수십 개의 요청이 될 수 있습니다. "웹"입니다. 그것은 그렇게 간단한 것이 아닙니다. –

+0

나는 그것을 완전히 알고있다. 도메인을 벗어난 도메인은 괜찮지 만 동일한 도메인을 향한 모든 콘텐츠는 전달/미러링되어야합니다. – Verhogen