오프라인 일 때 가짜 온라인 웹 사이트


15

로컬 서버를 사용하여 웹 사이트를 개발하고 있지만 원격 종속성이 있습니다. 원격 서버의 파일 요청을 위조하고 싶습니다. 예를 들어, 브라우저가 fooCDN.com/bloatedLib.js내용을 요청하면 의 내용 /Users/name/Desktop/bloatedLib.js이 반환됩니다.

나는 Mac을 사용하고 시스템이나 브라우저 수준에서 작동하는 솔루션이 좋습니다. 브라우저 수준에서 작동하면 Firefox 또는 Chrome 솔루션 만 있으면됩니다. Windows 컴퓨터를 사용할 수 없습니다.


Windows 컴퓨터를 사용할 수 있습니까?
geek1011

@ geek1011 아니오, 불가능합니다
Daniel F

5
잘 이해하고 있는지 확실하지 않지만 인터넷에 연결되어 있지 않아도 웹 사이트에 액세스하려고합니까? 그렇다면 로컬 사본에 액세스 하시겠습니까? 프록시 서버처럼?
LPChip

@LPChip 오프라인 상태에서도 jQuery와 같은 외부 종속성을로드해야합니다. 이것은 다른 사람의 저장소이므로 외부 종속성을 로컬로 만들 수는 없습니다. 오프라인 상태 일 때 브라우저 캐시에 버전을로드 할 수 있다면 완벽 할 것입니다. 웹 사이트의 대부분은 로컬 서버에 있습니다.
Daniel F

HTML5 "오프라인 웹앱"을 사용할 수 있습니다
Michael

답변:


11

나는이 작은 프록시 서버를 해킹하여 누락 된 파일 만 다운로드했습니다. 127.0.0.1에서 캐시하려는 사이트와 0.0.0.0에서 차단하려는 사이트를 가리 키도록 / etc / hosts 파일을 설정하십시오.

#!/bin/sh 
nc -ll -p 80 -e sh -c ' 
while read A B DUMMY 
do 
   case "$A" in 
      [Gg][Ee][Tt]) 
         FULL=$B #full path of the file
         F=${FULL##*/}
         F=${F%%\?*} #file name only
         #if we have it cat it back to browser
         [ -f "$F" ] && cat "$F" && break 
      ;; 
      [Hh][Oo][Ss][Tt]*) 
         [ -f "$F" ] && break #file already exists
         HOST=${B:0:$((${#B}-1))} #the host name
         #resolve by DNS first so we can cache it
         sed -i "s/hosts:\t\tfiles /hosts:\t\t/g" /etc/nsswitch.conf 
         wget -t 0 -q --no-dns-cache $HOST$FULL
         #got it now revert to checking host file 1st
         sed -i "s/hosts:\t\t/hosts:\t\tfiles /g" /etc/nsswitch.conf
         #cat the file because I didn't think to wget through tee
         cat "$F" 
         break 
      ;; 
   esac 
done 
'

모든 파일을 하나의 디렉토리에 저장하므로 버전 충돌이 발생할 수 있습니다. (이것은 의도적으로 했으므로 500 개의 jquery 사본이 없습니다)


코드를 더 잘 이해할 수 있도록 주석을 달 수 있습니까? 나는이 대답처럼 많이 나는 많은 소프트웨어를 설치할 필요가 없기 때문에
다니엘 F에게

1
@DanielF 나는 몇 가지 인라인 주석을 추가했습니다. 그것이 의미가 있는지 알려주십시오. 아마도 내가 쓴 가장 해킹 중 하나 일 것입니다. 하나의 바쁜 리소스를 기다리는 브라우저 마구간을 계속 확보했기 때문에 필자는 필연적으로 그것을 작성했습니다. 내가 쓸 때 강아지 리눅스를 사용하고 있다고 언급해야하므로 일부 라인을 sudo로 실행해야 할 수도 있습니다.
technosaurus

참고 : 일부 브라우저에는 파일을 "catting"하는 대신 실제 http 헤더가 필요할 수 있습니다 (아무도 사용하지 않았 음). 이 잘못된 동작을 수락 / 수정하지 않는 브라우저가있는 경우 stat를 사용하여 파일 크기를 가져 와서 적절한 헤더를 인쇄하는 데 사용할 수 있습니다.
technosaurus

@ technosaurus : 비슷한 것을 구현하려고하는데 오류가 발생합니다. illegal option -- e, 도와 줄 수 있습니까?
Anurag Peshne

@AnuragPeshne netcat의 여러 가지 다양한 구현이 있습니다. 사용하는 구현에 따라 -c스크립트를 실행하는 데 매개 변수 를 사용할 수 있습니다 ( 부분이 -e없는 것과 동일 sh -c)
technosaurus

24

로컬 웹 서버를 실행하는 것 같습니다. 우수한.

Mac의 파일 시스템에는이라는 파일이 /etc/hosts있습니다. 다음에이 fooCDN.com줄을 추가하여 모든 요청을 로컬 컴퓨터로 리디렉션 할 수 있습니다 /etc/hosts.

127.0.0.1   foocdn.com www.foocdn.com

편집하려면 루트 (수퍼 유저) 권한이 필요합니다 /etc/hosts.

위의 줄은 fooCDN.com웹 서버가 수신 대기하는 자신의 컴퓨터에서로드 됨을 의미합니다 .

그러나 로컬에서 실행중인 웹 서버를 지정하지 않았습니다. 웹 서버 설명서에 따라 문서 루트를 fooCDN.com로 가리키는 가상 호스트를 만들어야합니다 /Users/name/Desktop/.

이것은 샘플 구성입니다 (내가 직접 테스트하지는 않았습니다) 당신은 Apache 와 함께 사용할 수 있습니다 :

<VirtualHost 127.0.0.1:80>
    ServerName foocdn.com
    ServerAlias www.foocdn.com
    DocumentRoot /Users/name/Desktop
</VirtualHost>

Nginx에 대한 샘플 구성은 다음과 같습니다 (테스트되지 않음).

server {
    listen 80;
    root /Users/name/Desktop;
    server_name foocdn.com;
}

웹 서버 서비스를 다시 시작하거나 새 구성 파일을 다시로드하는 것을 잊지 마십시오.


귀하의 답변은 좋지만 설치를 요구하지 않는 답변을 수락했습니다
Daniel F

@DanielF : 아, 그래서 당신은 로컬 웹 서버를 실행하고 있지 않습니까?
Deltik

1
@ 델틱 맞습니다. 그는 원하는 질문 할 수 있도록 fooCDN.com그가 인터넷 연결이없는 경우 파일.
BenjiWiebe

2

URL 재 작성 을 지원 하는 프록시 서버 소프트웨어 를 사용하여 작업을 수행 할 수 있습니다 . 많은 프록시 서버 응용 프로그램은 URL 재 작성을 지원합니다. 예를 들어, Windows, Mac OS 및 Linux 용 Charles 웹 디버깅 프록시 애플리케이션 은 URL 재 작성을 지원합니다 . Mac 시스템에 설치 한 다음 프록시 서버를 사용하도록 시스템의 브라우저를 구성 할 수 있습니다.

또는 무료 및 오픈 소스 인 Apache 에는 mod_proxymod_rewrite 모듈이 있습니다.

Mitmproxy 는 무료이며 Mac OS X 시스템에서도 실행됩니다.

프록시 서버를 통해 사용할 수 있도록 브라우저의 캐시에서 항목을 가져와야하는 경우 Chrome 캐시보기 (손쉬운 방법) 에서 제공되는 기술을 사용할 수 있습니다 . 예를 들어, Chrome chrome:\\cache에서는 브라우저의 주소 표시 줄에 넣은 다음 Chrome 캐시에서 관련 항목을 찾아 다른 곳에 복사 할 수 있습니다.


Charles 이외의 소프트웨어, 특히 무료 소프트웨어에 대해 알고 있습니까?
Daniel F

귀하의 답변은 훌륭하지만 무료 소프트웨어가 아닌 다른 답변을 수락했습니다.
Daniel F

괜찮아; Deltik의 솔루션은 귀하의 상황에 적합한 솔루션입니다. Charles에게 몇 가지 무료 대안을 추가했습니다.
moonpoint

1
@DanielF 또 다른 디버깅 프록시는 Fiddler 로 알파 OS X 빌드를 가지며 파일 응답특정 응답 재생을 지원 합니다 . 전체 도메인을 리디렉션하는 것보다 세분화됩니다.
Bob

2

좋은 오래된 wwwoffle 같은 소리가 당신의 요구를 충족시켜야합니다. 오프라인 사용을위한 리소스를 선택할 수있는 프록시 서버입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.