Bir iPad'den yapılan HTTP isteklerini nasıl yeniden yönlendirebilirim?


117

Bir iPad'de hosts dosyasını düzenleyemediğimizden (jailbreak yapmadan), web trafiğini rastgele başka bir url'ye nasıl yönlendirebiliriz?

Bu, bir geliştirme makinesine yeniden yönlendirmek istediğiniz Sanal Ana Bilgisayar yapılandırmasını kullanan bir web sitesi geliştirmek gibi bir şey için önemli olacaktır.

(Bu, şu soruyla ilgilidir: Bir iPad'in ana bilgisayar dosyasını düzenleyebilir miyim? )

Yanıtlar:


88

İPad'in bu sınırlamasını aşmanın yolu , ana bilgisayar dosyasını düzenleyebileceğiniz başka bir makinede çalışan Squid gibi bir HTTP proxy sunucusu kullanmaktır .

İPad'de Ayarlar -> Ağ -> Wi-Fi -> (Ağınız) altında Manuel olarak ayarlanabilen bir HTTP Proxy ayarı vardır. Vekil bilgilerinizi buraya girin.

Bu ayarlandıktan sonra, iPad'i ana bilgisayar dosyasını değiştiriyormuş gibi değiştirebilirsiniz.


3
Sadece kayıt için, macports "sudo port install squid" kullanarak kalamar yüklemenin oldukça kolay olduğunu söyleyebilirim
MiQUEL

1
veya yum install squidfedora'da
Abhishek

3
veya apt-get install squidUbuntu'da
Jess Telford

3
Not: Squid sunucunuzdaki hosts dosyasını her düzenlediğinizde, düzenlemelerin etkili olduğundan emin olmak için Squid hizmetini yeniden başlatın. Ubuntu'da bu sudo service squid3 reload. Ayrıca - ve belki de bu, dev sunucuma özgü bir yapılandırma sorunudur - iPad'imde adres çözümlemesinin doğru çalışması için http: //'yi manuel olarak girmem gerekiyor.
Andy Giesler

1
Bunu yapmanın bir başka, daha kolay yolu yazdığım bir araç: testProxy. Yapılandırma gerekmez: github.com/edwinm/testProxy
edwin

71

Geliştirme makinenizin IP adresini bir HTTP proxy'si olarak kullanmak için iPad'inizdeki Wifi ayarlarını değiştirmeniz gerektiğini fark ettim ( yukarıda belirtilen makalede açıklandığı gibi ):

görüntü açıklamasını buraya girin

Bu şekilde, web uygulamanıza iPad'inizde sanal ana bilgisayarın url'sini girerek (örn. local.mywebapp.com) Erişmeniz yeterlidir . Kolay ve hızlıdır, ancak Will Koehler'in çözümünün aksine, yine de iPad'den İnternet'e erişemeyeceksiniz. Ancak çoğu zaman bu gerçekten bir sorun değil çünkü sadece kendi uygulamanızı test etmek istiyorsunuz.


1
Mükemmel cevap. Webrick kullanarak bir ray uygulamasını test ediyorsanız, dev makinenizin ip adresini ve 3000
numaralı

4
Windows'ta Wamp veya uWamp kullanıyorsanız, bağlantı noktasını olarak ayarlayın 80.
Epoc

10
Yerel uygulamanızın internetteki çeşitli API'lerden veri aldığı benimki gibi durumlar ne olacak?
Jared Eitnier

28

Hosts dosyasını Fiddler veya Charles gibi bir proxy sunucusu çalıştıran bir bilgisayarda kurun ve iPad'i bu bilgisayarı bir HTTP proxy olarak kullanacak şekilde yapılandırın.

Bunu Fiddler ile nasıl yapacağınıza ilişkin talimatları burada bulabilirsiniz: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

Ve bu Charles için: http://www.ravelrumba.com/blog/ipad-http-debugging/


Windows / Mac seçeneklerini detaylandırdığınız için teşekkürler.
tremoloqui

2
Biz Windows geliştiricileri için Fiddler harika bir seçenektir, çünkü çoğu geliştiricinin zaten yüklemiş olması gerekir.
Josh Mouch

11

Geliştirme yaptığınız bir Apache sunucunuz zaten varsa , bunu bir ileri proxy olarak kolayca kullanabilirsiniz. Bu, özellikle tam mutlak URL'yi kullanmayı gerçekten seven WordPress siteleri için kullanışlıdır.

Aşağıdaki Ubuntu örneği:

İlk adım, /etc/hostsdosyayı dev sunucunuzdaki düzenlemektir . Sitenize işaret ederek sunucunun yerel IP adresini ekleyin.

127.0.0.1 dev.mysite.com

Bu ana bilgisayar dosyası, iPhone / iPad'inizden gelen istekleri çözmeye çalışırken Apache proxy'niz tarafından kullanılacaktır. Öyleyse şimdi Apache bölümünü kuralım ...

Önce bazı modülleri kurmanız gerekebilir.

sudo apt-get install libapache2-mod-proxy-html
sudo a2enmod proxy proxy_http proxy_html
sudo apache2ctl graceful

Ardından, örneğin bir sanal ana bilgisayar dosyası oluşturun /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>

Vhost'u etkinleştirin ve Apache'yi yeniden başlatın:

sudo a2ensite my-proxy
sudo apache2ctl graceful

Ardından Ayarlar> Wi-Fi> Ağınız'a gidin ve bir "Manuel" proxy yapılandırın. Apache sunucunuzun IP'sini ve bağlantı noktasını girin. Bu kadar!

<Proxy *>Blok olmasını sağlar benim yerel ağdaki tek kişi bu vekil kullanabileceği. Bir ileri proxy kullanıyorsanız , erişimi kesin olarak sınırlamak önemlidir . İp2cidr sayfası bu noktada yararlı olacaktır. (Ek bir önlem olarak: 8080 bağlantı noktası güvenlik duvarım tarafından engellendi.)


9

Bir iPad'de geliştirdiğim web uygulamalarını test etmem gerekiyor. Web uygulamalarını çalıştırmak için geliştirici makinemde Apache kullanıyorum, bu yüzden bulduğum en kolay çözüm Apache mod_proxy kullanmaktı.

Dev makinem ev ağımda sapphire.local olarak görünüyor.

Test ettiğim web uygulaması, demo.cms.dev adresindeki dev makinesinde barındırılıyor (POW kullanıyorum).

Proxy kurmak için aşağıdaki bölümü httpd.conf'a ekledim.

<VirtualHost *:80>
  ServerName sapphire.local
  ProxyPass / http://demo.cms.dev/
  ProxyPassReverse / http://demo.cms.dev/
  ProxyPassReverseCookieDomain .cms.dev .sapphire.local
  ProxyPreserveHost Off
</VirtualHost>

Bu, sapphire.local üzerinden gelen istekleri demo.cms.dev'e yönlendirir. Yöntem, bir seferde yalnızca bir uygulama için çalışır. Ek uygulamaları kurmak için farklı bağlantı noktaları kullanabileceğinizi düşünüyorum. Belki birinin daha iyi bir çözümü vardır?


Bu beni doğru yönü gösterdi. Başlangıçta "URL için hiçbir protokol işleyicisi geçerli değildi" hata mesajı aldım. Çalışması için hem proxy_module hem de proxy_http_module yüklemem gerektiğini fark ettim. Teşekkürler!
Hobo

8

Web trafiği yönlendirmeleri oluşturmak için Weblock - AdBlock for iOS uygulamasını kullanmak da mümkündür (burada 1,99 $ karşılığında mevcuttur: https://itunes.apple.com/us/app/weblock/id558818638?mt=8 ).

Bu, belirli bir kuralla eşleşen herhangi bir trafiği belirtilen IP adresine yeniden yönlendirmenize olanak tanır. Bu, iOS cihazınızda / etc / hosts dosyasına bir giriş eklemeyi taklit edecektir. İsteklerde ayarlanan ana bilgisayar adı trafiğinizi yönlendirdiğiniz IP tarafından işleniyorsa, bunu özel API'yi test etmek ve hatta diğer uygulamalardan veya web sitelerinden gönderilen trafiği koklamak için kullanabilirsiniz. Bu maalesef yalnızca http / https bağlantıları için çalışır.

Tüm bunlar yalnızca Wi-Fi üzerindeyken yapılabilir (Weblock'un sınırlamalarından biri). Başlıca avantajı, iOS cihazınızdan her şeyi kolayca yapılandırabilmeniz ve DNS / proxy sunucu yapılandırmasıyla uğraşmanıza gerek olmamasıdır.

İşte bir örnek:

  1. Weblock'u şu şekilde yapılandırdım: http://i.stack.imgur.com/c5SUh.png
  2. Safari'yi açın ve www.google.com'a URL olarak yazın
  3. Bu, 1234 numaralı bağlantı noktasında bağlantı için dinleyen Mac'imdeki terminaldeki çıktı:
    macbook-pro-tk: ~ kpr $ nc -l -v -v 1234
    Http://www.google.com/ HTTP / 1.1 EDİNİN
    Barındırıcı: www.google.com
    Kabul et: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
    Proxy Bağlantısı: canlı tutma
    PREF =, J = 7722bc3c844a7c26: TM = 1402073839 LM = 1402073839: S = 5bSJJsM2p0HgUP7L
    Kullanıcı Aracısı: Mozilla / 5.0 (iPhone; CPU iPhone OS 7_1_1, Mac OS X gibi) AppleWebKit / 537.51.2 (KHTML, Gecko gibi) Sürüm / 7.0 Mobil / 11D201 Safari / 9537.53
    Kabul-Dili: en-us
    Accept-Encoding: gzip, deflate
    Bağlantı: canlı tutma

Web kilidi, bazı URL'leri düzenli ifadelerle seçici olarak yeniden yönlendirmek için de iyidir. Diğer tüm sorgular DNS'den döndürülen IP'ye giderken, sorguları yalnızca belirli bir uç noktaya yeniden yönlendirebilirsiniz. Bu aslında / etc / hosts'dan daha uygun konfigürasyona izin verir.

Örnek: Eğer, *: //somedomain.com/api/login* ve bazı IP ve portlar için bir URL yönlendirme kuralı oluşturursam , bu IP ve portta sadece bu URL'den gelen trafiği, diğer tüm trafiği ise bir yere yönlendiririm. com.tr doğrudan DNS tarafından döndürülen IP'ye gidecektir. Bunun için çalışacak Bildirimi hem / API / giriş ve / API / login? Someparam = birdeğer kuralın sonundaki joker * işareti sayesinde.


Teşekkürler. Bunu yeni satın aldım ve deneyeceğim.
Dennis Günü

6

Mac'te squidman kullanarak yaptım . Kurması ve kullanması kolaydır. Bu yazıyı
takip ederek 5 dakikada kurdum .

Güncelleme

Başka bir şey, proxy sunucusu üzerinde çalışan web sitelerine bağlanmak istiyorsanız, benim durumumda benim Mac'im, bu satırı squidman-> Tercihler-> Şablon'da yorumlamanız gerekir.

# protect web apps running on the proxy host from external users
# http_access deny to_localhost

5

Ağınızda dahili bir DNS sunucusu kurabilir (eğer zaten yoksa) ve bir A kaydı oluşturabilirsiniz. Ardından, DHCP'nizin söz konusu DNS sunucusunu döndürecek şekilde ayarlandığından emin olun.


3

Ayrıca bu sayfadaki talimatları kullanarak http://xip.io/ adresini de kullanabilirsiniz , ip adresini girebilirsiniz ve sizi ilgili yerel ip'e yönlendirecektir.


2

Canlı bir web siteniz varsa bunun için kullanabilirsiniz:

DNS yapılandırmanıza bir A kaydı ekleyebilirsiniz: bir şey.etkialaniniz.com, yerel IP adresinize işaret eder, ardından bir şey.alaniniz.com için sanal ana makine dosyanıza bir giriş ekleyebilirsiniz. Apache'yi yeniden başlatın, iOS cihazınızı aynı ağa alın ve gitmeniz iyi olur.


1

Burada, Mamp Pro Sanal ana bilgisayarın çapraz cihaz / bilgisayar testi için yapılandırmasız bir yöntem verilmiştir. Tek sınırlama, bir seferde yalnızca bir alanı test edebilmenizdir, ancak benim için bu, geliştirirken sorun değil. Bununla birlikte, sanal konaklar arasında doğrudan mamp'ta geçiş yapmak gerçekten basittir.

Mamp Pro 2'yi yönetiyorum, dağ aslanı. Sitelerim klasörü, tek tek etki alanı klasörlerini içerir.

Sanal ana bilgisayar 'ip / port' altında yerel bilgisayarın belirli ipini seçerseniz ve mamp'ı yeniden başlatırsanız, bu etki alanının, ağ üzerindeki yerel ana bilgisayarların ip adresini veya bilgisayar adını görüntülerken varsayılan etki alanı olacağını öğrendim.

Test amacıyla bu, iPad dahil ağdaki tüm cihazlarda harika çalışıyor. Başka bir sanal konağı test etmek istiyorsanız, ip / port yapılandırmasını "*" olarak döndürebilir ve ardından başka bir alanı bilgisayarın ip adresine yeniden atayabilir ve yeniden başlatabilirsiniz.

Bu basit yaklaşımın avantajı, aynı ağ üzerindeyken, makinelerinde herhangi bir yapılandırmadan geçmek zorunda kalmadan istemcilere doğrudan geliştirme sitelerinize erişim sağlayabilmenizdir.

Umarım bu, basit bir çözüm arayan başkalarına yardımcı olur.


1

Dahili DNS Sunucusu seçeneklerden biridir, ancak bu uygulanması çok zahmetliydi. Squid'i proxy sunucusu olarak kurmayı denedik, ancak bu da işe yaramadı çünkü URL'yi yeni sunucuya yeniden yönlendiriyordu ve bu yönlendirme tarayıcı URL'sinde de görüldü.

Sonunda bizim için işe yarayan şey, Fiddler'ı sunucudan birine kurmak ve bu sunucuyu ipad üzerinde proxy sunucusu olarak kullanmaktı. Fiddler ayrıca alt etki alanlarını IP adreslerine eşleme özelliğine de sahiptir, yani / etc / hosts'a benzer bir şey.


1

Bunu yapmak için güzel bir eğitim: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Diğer bir yol, IPad'i Yerel Erişim Noktası aracılığıyla MAC OS X'ime bağlamak ve geliştirme sanal makinesine bir bağlantı noktası iletimi oluşturmaktır. Bunu başarmak için aşağıdaki Adımları uyguladım:

  • MAC OS X'te bir WLAN-Hotspot Bağlantısı oluşturun bunun nasıl yapılacağı
  • iPAD'i Hotspot-WLAN'a bağlayın (iPAD'de >> Ayarlar >> WLAN)
  • ServerAlias'ı yerel geliştirme-VM'ye ekleyin (ayrıntılar aşağıdadır)
  • ssh-portforwarding kurmak
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • int iPADs Browser IP ile sayfayı açın
    <IP-of-hotspot-host>:<source-port>

"IP-of-hotspot-host" nereden alınır:

Etkin nokta oluşturulduktan sonra,
MAC OS X sistem ayarlarında >> Ağ >> WLAN içinde bir WLAN-Noktası vardır

ServerAlias ​​Ekleme:

/Etc/apache2/sites-available/dkr.dev.local içindeki geliştirme sanal makinemde (Apache2) aşağıdakileri eklemem gerekiyordu:

<VirtualHost *: 80>  
    ...  
    ServerAlias ​​<IP-of-hotspot-host>  
    ...  
</ VirtualHost>

1

Bunu ve birkaç dış bağlantıyı araştırıyorsanız, muhtemelen şu cevabı bulacaksınız:

https://stackoverflow.com/a/24770097/3842985

Dnsmasq adlı hafif bir DNS sunucusu hakkındadır. Süper basit, çok güçlü ve dahili veya harici DNS sunucularınızla birlikte kullanılabilir.

Kalamar kurmaktan, Apache ile uğraşmaktan ve zaman alıcı olan ve yapılandırmaların "bütünlüğünü" riske atan, ortamları geliştiren, test ortamlarını vb. Riske atmaktan çok daha kolaydır.

Düşünmeye değer.

Bunu geliştirme ve normal ağ oluşturma için düzenli bir araç olarak kabul ettim.


1

PC'de özel DNS sunucusu kullanmak bunu çözebilir. Mükemmel kullanıyorum ve çalışıyorum.

Özel DNS sunucusunu indirmek için https://technitium.com/dns/ adresini kontrol edin . NET teknolojisi kullanılarak oluşturulmuştur. Bu aracı yapılandırdıktan sonra, DNS ayarını özel olarak değiştirmeniz ve PC'nizin IP'sini ayarlamanız gerekir. PC'yi her yeniden başlattığınızda IP'yi değiştirmekten kaçınmak için PC'de statik IP kullanın.


0

Profillere göre mobil trafiği yeniden yönlendirebilen Relay Server'ı (Afaria'nın bir parçası) deneyeceğim.

Güncelleme: tremoloqui'nin cevabı daha az sorun ve çok daha ucuz görünüyor.


0

Buradaki cevaplar doğrudur. Biraz daha bilgi: Bunlar, sertifika sabitleme ile çalışmayacaktır. Yapabilecekleriniz, (1) geliştirme / test / qa bölge testinizi desteklemek için bir etki alanı joker karakter sertifikası kullanmaktır. Ve / veya (2) Apache'nin ağınızdaki istekleri yönlendirdiği yeri değiştirdiğiniz Apache gibi bir ters proxy sunucusu kullanın. Şimdi, SSL Pinning testine girdiğinizde, fiziksel cihazlarla suda ölüsünüz ve yalnızca simülatör (ios) ve emülatör (android) ile doğrulayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.