iPad에서는 탈옥없이 호스트 파일을 편집 할 수 없기 때문에 웹 트래픽을 다른 URL로 임의로 리디렉션하려면 어떻게해야합니까?
이는 개발 머신으로 리디렉션하려는 가상 호스트 구성을 사용하는 웹 사이트 개발과 같은 작업에 중요합니다.
(이 질문과 관련이 있습니다. iPad의 호스트 파일을 편집 할 수 있습니까? )
답변
iPad의 이러한 한계를 극복하는 방법 은 호스트 파일을 편집 할 수있는 다른 시스템에서 실행중인 Squid 와 같은 HTTP 프록시 서버를 사용하는 것입니다.
iPad에서 설정-> 네트워크-> Wi-Fi-> (네트워크) 수동으로 설정할 수있는 HTTP 프록시 설정이 있습니다. 여기에 프록시 정보를 입력하십시오.
이것이 설정되면 마치 호스트 파일을 변경하는 것처럼 iPad를 조작 할 수 있습니다.
답변
내가 발견 그냥 와이파이 설정을 수정해야 할 HTTP 프록시합니다 (에서 설명한 바와 같이 개발 컴퓨터의 IP 주소를 사용하는 아이 패드에 상기 기사 ) :
이렇게하면 가상 호스트의 URL (예 :)을 입력하여 iPad에서 웹 애플리케이션에 액세스 할 수 있습니다 local.mywebapp.com
. 쉽고 빠르지 만 Will Koehler의 솔루션과 달리 iPad에서 인터넷에 액세스 할 수 없습니다. 그러나 대부분의 경우 자체 애플리케이션을 테스트하기를 원하기 때문에 실제로 문제가되지 않습니다.
답변
Fiddler 또는 Charles와 같은 프록시 서버를 실행하는 컴퓨터에서 호스트 파일을 설정하고 해당 컴퓨터를 HTTP 프록시로 사용하도록 iPad를 구성합니다.
다음은 Fiddler로이를 수행하는 방법에 대한 지침입니다.
http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html
그리고 이것은 Charles를위한 것입니다 :
http://www.ravelrumba.com/blog/ipad-http-debugging/
답변
개발중인 Apache 서버가 이미있는 경우 포워드 프록시로 쉽게 사용할 수 있습니다. 이것은 전체 절대 URL을 사용하는 것을 정말 좋아하는 WordPress 사이트에 특히 유용합니다.
아래 Ubuntu 예제 :
첫 번째 단계는 /etc/hosts
개발 서버에서 파일 을 편집하는 것 입니다. 사이트를 가리키는 서버의 로컬 IP를 추가하십시오.
127.0.0.1 dev.mysite.com
이 호스트 파일은 iPhone / iPad의 요청을 해결하려고 할 때 Apache 프록시에서 사용됩니다. 이제 Apache 부분을 설정하겠습니다.
먼저 일부 모듈을 설치해야 할 수도 있습니다.
sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful
그런 다음 가상 호스트 파일을 만듭니다. 예를 들면 /etc/apache2/sites-available/my-proxy
Listen *:8080
<VirtualHost *:8080>
ProxyRequests On
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 192.168.1.0/24
</Proxy>
</VirtualHost>
가상 호스트를 활성화하고 Apache를 다시 시작합니다.
sudo a2ensite my-proxy
sudo apache2ctl graceful
그런 다음 설정> Wi-Fi> 네트워크 로 이동하여 “수동”프록시를 구성합니다. Apache 서버의 IP와 포트를 입력하십시오. 그게 다야!
<Proxy *>
블록 보장하지만 내 로컬 네트워크에있는 사람들 만이 프록시를 사용할 수있다. 엄밀히 액세스를 제한하는 것은 필수적이다 당신이 앞으로 프록시를 사용하는 경우. ip2cidr의 페이지는이 시점에서 도움이 될 것입니다. (추가 조치로 : 8080 포트가 방화벽에 의해 차단되었습니다.)
답변
iPad에서 개발중인 웹 앱을 테스트해야합니다. 내 dev 컴퓨터에서 Apache를 사용하여 웹 앱을 실행하므로 가장 쉬운 해결책은 Apache mod_proxy를 사용하는 것입니다.
내 개발 머신은 홈 네트워크에서 sapphire.local로 표시됩니다.
테스트중인 웹 앱은 demo.cms.dev (POW를 사용하고 있음)의 dev 컴퓨터에서 호스팅됩니다.
프록시를 설정하기 위해 httpd.conf에 다음 섹션을 추가했습니다.
<VirtualHost *:80>
ServerName sapphire.local
ProxyPass / http://demo.cms.dev/
ProxyPassReverse / http://demo.cms.dev/
ProxyPassReverseCookieDomain .cms.dev .sapphire.local
ProxyPreserveHost Off
</VirtualHost>
그러면 sapphire.local에서 들어오는 요청을 demo.cms.dev로 라우팅합니다. 이 방법은 한 번에 하나의 앱에서만 작동합니다. 다른 포트를 사용하여 추가 앱을 설정할 수 있다고 생각합니다. 누군가가 더 나은 해결책을 가지고 있습니까?
답변
웹 트래픽 리디렉션을 생성 하기 위해 Weblock-iOS 앱용 AdBlock ($ 1.99에 사용 가능 : https://itunes.apple.com/us/app/weblock/id558818638?mt=8 )을 사용할 수도 있습니다.
이를 통해 특정 규칙과 일치하는 트래픽을 지정된 IP 주소로 리디렉션 할 수 있습니다. 이것은 iOS 장치의 / etc / hosts에 항목을 추가하는 것과 같습니다. 요청에 설정된 호스트 이름이 트래픽을 전달하는 IP로 처리되는 경우이를 사용하여 비공개 API를 테스트하거나 다른 앱이나 웹 사이트에서 전송 된 트래픽을 스니핑 할 수도 있습니다. 불행히도 http / https 연결에서만 작동합니다.
이 모든 작업은 Wi-Fi 상태에서만 가능합니다 (Weblock의 제한 사항 중 하나). 주요 이점은 iOS 장치에서 모든 것을 쉽게 구성 할 수 있으며 DNS / 프록시 서버 구성을 엉망으로 만들 필요가 없다는 것입니다.
예를 들면 다음과 같습니다.
- 다음과 같이 Weblock을 구성했습니다. http://i.stack.imgur.com/c5SUh.png
- Safari를 열고 www.google.com에 URL을 입력했습니다.
- 이것은 포트 1234에서 연결을 수신하는 내 Mac의 터미널 출력입니다.
macbook-pro-tk : ~ kpr $ nc -l -v -v 1234 GET http://www.google.com/ HTTP / 1.1 호스트 : www.google.com 수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 프록시 연결 : 연결 유지 PREF = ID = 7722bc3c844a7c26 : TM = 1402073839 : LM = 1402073839 : S = 5bSJJsM2p0HgUP7L 사용자 에이전트 : Mozilla / 5.0 (iPhone, Mac OS X와 같은 CPU iPhone OS 7_1_1) AppleWebKit / 537.51.2 (Gecko와 같은 KHTML) 버전 /7.0 Mobile / 11D201 Safari / 9537.53 Accept-Language : en-us Accept-Encoding : gzip, deflate 연결 : 연결 유지
Weblock은 정규 표현식을 사용하여 일부 URL을 선택적으로 리디렉션하는데도 좋습니다. 쿼리를 특정 엔드 포인트로만 리디렉션 할 수 있지만 다른 모든 쿼리는 DNS에서 반환 된 IP로 이동합니다. 이것은 실제로 / etc / hosts가 수행하는 훨씬 더 적합한 구성을 허용합니다.
예 : htt * : //somedomain.com/api/login* 및 일부 IP 및 포트에 대한 URL 리디렉션 규칙을 생성하면 이 IP 및 포트에서이 URL의 트래픽 만 표시되고 다른 모든 트래픽은 somedomain으로 이동합니다. com은 DNS가 반환 한 IP로 직접 이동합니다. 규칙 끝에있는 와일드 카드 * 기호 덕분에 / api / login 및 / api / login? someparam = somevalue 모두에서 작동합니다 .