Làm cách nào để chuyển hướng các yêu cầu HTTP được thực hiện từ iPad?


116

Vì trên iPad, chúng ta không thể chỉnh sửa tệp hosts (mà không cần bẻ khóa), làm thế nào chúng ta có thể tùy ý chuyển hướng lưu lượng truy cập web đến một url khác?

Điều này sẽ quan trọng đối với một số thứ chẳng hạn như phát triển trang web sử dụng cấu hình Máy chủ ảo mà bạn muốn chuyển hướng đến máy phát triển.

(Điều này liên quan đến câu hỏi này: Tôi có thể chỉnh sửa tệp máy chủ của iPad không? )

Câu trả lời:


88

Cách để khắc phục hạn chế này của iPad là sử dụng máy chủ proxy HTTP, chẳng hạn như Squid chạy trên một máy khác, nơi bạn có thể chỉnh sửa tệp máy chủ.

Trên iPad Trong Cài đặt -> Mạng -> Wi-Fi -> (Mạng của bạn) Có một cài đặt HTTP Proxy có thể được đặt thành thủ công. Nhập thông tin proxy của bạn tại đây.

Khi điều này được thiết lập, bạn sẽ có thể thao tác iPad như thể bạn đang thay đổi tệp máy chủ.


3
Chỉ cần cho các hồ sơ tôi muốn nói đó là khá dễ dàng để cài đặt mực sử dụng macports "cổng sudo cài đặt mực"
Miquel

1
hoặc yum install squidtrên fedora
Abhishek

3
hoặc apt-get install squidtrên Ubuntu
Jess Telford

3
Lưu ý: mỗi khi bạn chỉnh sửa tệp máy chủ lưu trữ trên máy chủ Squid của mình, hãy khởi động lại dịch vụ Squid để đảm bảo các chỉnh sửa có hiệu lực. Trên Ubuntu đó là sudo service squid3 reload. Ngoài ra - và có thể đây là sự cố cấu hình cụ thể đối với máy chủ nhà phát triển của tôi - trên iPad của tôi, tôi phải nhập thủ công http: // để giải pháp địa chỉ hoạt động chính xác.
Andy Giesler

1
Một cách khác, dễ dàng hơn để làm điều này là với một công cụ tôi đã viết: testProxy. Không cần cấu hình: github.com/edwinm/testProxy
edwin

71

Tôi thấy bạn chỉ cần sửa đổi cài đặt Wifi trong iPad của mình để sử dụng địa chỉ IP của máy phát triển của bạn làm proxy HTTP (như được giải thích trong bài viết đã nói ở trên ):

nhập mô tả hình ảnh ở đây

Bằng cách đó, đủ để có thể truy cập ứng dụng web của bạn trên iPad bằng cách nhập url của máy chủ ảo (ví dụ local.mywebapp.com:). Thật dễ dàng và nhanh chóng, nhưng không giống như giải pháp của Will Koehler, tuy nhiên, bạn sẽ không thể truy cập Internet từ iPad. Nhưng hầu hết thời gian nó không thực sự là một vấn đề, vì bạn chỉ muốn thử nghiệm ứng dụng của riêng mình.


1
Câu trả lời chính xác. Nếu bạn đang thử nghiệm một đường ray ứng dụng sử dụng Webrick, chỉ cần thiết lập địa chỉ IP của máy dev của bạn và cổng 3000
lsaffie

4
Nếu bạn đang sử dụng Wamp hoặc uWamp trên Windows, hãy đặt cổng thành 80.
Epoc

10
Còn những trường hợp như của tôi trong đó ứng dụng cục bộ của bạn lấy dữ liệu từ các API khác nhau trên mạng thì sao?
Jared Eitnier

28

Thiết lập tệp máy chủ lưu trữ trên máy tính chạy máy chủ proxy như Fiddler hoặc Charles và định cấu hình iPad để sử dụng máy tính đó làm proxy HTTP.

Dưới đây là hướng dẫn về cách thực hiện việc này với Fiddler: http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html

Và đây là dành cho Charles: http://www.ravelrumba.com/blog/ipad-http-debugging/


Cảm ơn bạn đã bổ sung các tùy chọn Windows / Mac.
tremoloqui

2
Đối với các nhà phát triển Windows, Fiddler là một lựa chọn tuyệt vời vì hầu hết các nhà phát triển đều đã cài đặt nó.
Josh Mouch 14/11/11

11

Nếu bạn đã có một máy chủ Apache nơi bạn đang phát triển, bạn có thể dễ dàng sử dụng nó như một proxy chuyển tiếp. Điều này đặc biệt hữu ích cho các trang web WordPress, những trang web thực sự thích sử dụng URL tuyệt đối đầy đủ.

Ví dụ Ubuntu bên dưới:

Bước đầu tiên là chỉnh sửa /etc/hoststệp trong máy chủ nhà phát triển của bạn. Thêm IP cục bộ của máy chủ, trỏ đến trang web của bạn.

127.0.0.1 dev.mysite.com

Tệp máy chủ này sẽ được proxy Apache của bạn sử dụng khi nó cố gắng giải quyết các yêu cầu từ iPhone / iPad của bạn. Vì vậy, hãy thiết lập phần Apache ngay bây giờ ...

Bạn có thể cần cài đặt một số mô-đun trước.

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

Sau đó, tạo một tệp máy chủ ảo, chẳng hạn /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>

Bật vhost và khởi động lại Apache:

sudo a2ensite my-proxy
sudo apache2ctl graceful

Sau đó, đi tới Cài đặt> Wi-Fi> Mạng của bạn và định cấu hình proxy "Thủ công". Nhập IP của máy chủ Apache của bạn và cổng. Đó là nó!

Các <Proxy *>Đảm bảo khối mà chỉ có những người trong mạng nội bộ của tôi có thể sử dụng proxy này. Hạn chế nghiêm ngặt quyền truy cập là điều cần thiết nếu bạn đang sử dụng proxy chuyển tiếp. Các ip2cidr trang sẽ rất hữu ích vào thời điểm này. (Như một biện pháp bổ sung, cổng: 8080 đã bị tường lửa của tôi chặn.)


9

Tôi cần kiểm tra các ứng dụng web mà tôi đang phát triển trên iPad. Tôi sử dụng Apache trên máy dev của mình để chạy các ứng dụng web, vì vậy giải pháp đơn giản nhất mà tôi tìm thấy là sử dụng Apache mod_proxy.

Máy phát triển của tôi hiển thị trên mạng gia đình của tôi dưới dạng sapphire.local.

Ứng dụng web tôi đang thử nghiệm được lưu trữ trên máy phát triển tại demo.cms.dev (Tôi đang sử dụng POW).

Để thiết lập proxy, tôi đã thêm phần sau vào 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>

Điều này định tuyến các yêu cầu đến trên sapphire.local đến demo.cms.dev. Phương pháp này chỉ hoạt động cho một ứng dụng tại một thời điểm. Tôi nghĩ bạn có thể sử dụng các cổng khác nhau để thiết lập các ứng dụng bổ sung. Có lẽ ai đó có một giải pháp tốt hơn?


Điều này đã chỉ cho tôi đi đúng hướng. Ban đầu, tôi nhận được thông báo lỗi "Không có trình xử lý giao thức nào hợp lệ cho URL". Tôi thấy mình phải tải cả proxy_module và proxy_http_module để nó hoạt động. Cảm ơn!
Hobo

8

Cũng có thể sử dụng ứng dụng Weblock - AdBlock dành cho iOS (có giá $ 1,99 tại đây: https://itunes.apple.com/us/app/weblock/id558818638?mt=8 ) để tạo chuyển hướng lưu lượng truy cập web.

Điều này cho phép bạn chuyển hướng bất kỳ lưu lượng nào phù hợp với quy tắc nhất định đến địa chỉ IP được chỉ định. Điều này sẽ mô phỏng thêm một mục nhập vào / etc / hosts trên thiết bị iOS của bạn. Nếu tên máy chủ đặt trong các yêu cầu được xử lý bởi IP mà bạn hướng lưu lượng truy cập của mình đến, bạn có thể sử dụng tên này để kiểm tra API riêng tư hoặc thậm chí đánh hơi lưu lượng truy cập được gửi từ các ứng dụng hoặc trang web khác. Rất tiếc, điều này chỉ hoạt động cho các kết nối http / https.

Tất cả điều này chỉ có thể được thực hiện khi sử dụng Wi-Fi (một trong những hạn chế của Weblock). Có một lợi thế chính là bạn có thể dễ dàng cấu hình mọi thứ từ thiết bị iOS của mình và không cần phải gây rối với cấu hình máy chủ DNS / proxy.

Đây là một ví dụ:

  1. Tôi đã định cấu hình Weblock như thế này: http://i.stack.imgur.com/c5SUh.png
  2. Đã mở Safari và nhập www.google.com làm URL
  3. Đây là đầu ra trong thiết bị đầu cuối trên máy Mac của tôi đang nghe kết nối trên cổng 1234:
    macbook-pro-tk: ~ kpr $ nc -l -v -v 1234
    TẢI http://www.google.com.vn/ HTTP / 1.1
    Máy chủ: www.google.com
    Chấp nhận: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8
    Proxy-Connection: duy trì hoạt động
    PREF = ID = 7722bc3c844a7c26: TM = 1402073839: LM = 1402073839: S = 5bSJJsM2p0HgUP7L
    Tác nhân người dùng: Mozilla / 5.0 (iPhone; CPU iPhone OS 7_1_1 như Mac OS X) AppleWebKit / 537.51.2 (KHTML, như Gecko) Phiên bản / 7.0 Mobile / 11D201 Safari / 9537.53
    Chấp nhận ngôn ngữ: en-us
    Chấp nhận mã hóa: gzip, deflate
    Kết nối: tiếp tục tồn tại

Weblock cũng tốt để chuyển hướng có chọn lọc một số URL bằng các biểu thức chính quy. Bạn chỉ có thể chuyển hướng các truy vấn đến một số điểm cuối nhất định, trong khi tất cả các truy vấn khác đi đến IP được trả về từ DNS. Điều này thực sự cho phép cấu hình phù hợp hơn mà / etc / hosts làm được.

Ví dụ: Nếu tôi tạo quy tắc chuyển hướng URL cho htt *: //somedomain.com/api/login* và một số IP và cổng, tôi sẽ chỉ thấy lưu lượng truy cập từ URL này tại IP và cổng này, trong khi tất cả lưu lượng truy cập khác đến somedomain. com sẽ chuyển trực tiếp đến IP do DNS trả về. Lưu ý rằng nó sẽ hoạt động cho cả / api / login/ api / login? Someparam = somevalue nhờ vào ký tự đại diện * ở cuối quy tắc.


Cảm ơn. Tôi vừa mua cái này và sẽ dùng thử.
Ngày Dennis

6

Tôi đã thực hiện nó bằng cách sử dụng inkman trên Mac. Thật dễ dàng để thiết lập và sử dụng.
Tôi thiết lập nó sau 5 phút bằng cách làm theo bài viết này .

Cập nhật

Một điều nữa là nếu bạn muốn kết nối với các trang web chạy trên máy chủ proxy, trong trường hợp của tôi là máy Mac của tôi, bạn cần phải chú thích dòng này trong inkman-> Preferences-> Template

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

5

Bạn có thể thiết lập một máy chủ DNS nội bộ trên mạng của mình (nếu máy chủ này chưa tồn tại) và thiết lập một bản ghi A. Sau đó, đảm bảo DHCP của bạn được đặt để trả về máy chủ DNS đã nói


3

Bạn cũng có thể sử dụng http://xip.io/ bằng cách sử dụng các hướng dẫn trên trang đó, bạn có thể nhập địa chỉ ip và nó sẽ chuyển hướng bạn đến ip cục bộ có liên quan.


2

Nếu bạn có một trang web trực tiếp, bạn có thể sử dụng cho việc này:

Bạn có thể thêm bản ghi A vào cấu hình DNS của mình: something.yourdomain.com trỏ đến địa chỉ IP cục bộ của bạn, sau đó thêm một mục nhập cho something.yourdomain.com vào tệp máy chủ ảo của bạn. Khởi động lại Apache, đưa thiết bị iOS của bạn vào cùng một mạng và bạn đã sẵn sàng.


1

Đây là phương pháp không có cấu hình để kiểm tra thiết bị / máy tính chéo của máy chủ ảo Mamp Pro. Hạn chế duy nhất là bạn chỉ có thể kiểm tra một miền tại một thời điểm, nhưng đối với tôi, điều này là tốt khi tôi đang phát triển. Tuy nhiên, nó thực sự đơn giản để thay đổi giữa các máy chủ ảo trực tiếp trong mamp.

Tôi đang chạy mamp pro 2, sư tử núi. Thư mục trang web của tôi chứa các thư mục tên miền riêng lẻ.

Tôi nhận thấy nếu bạn chọn ip cụ thể của máy tính cục bộ trong máy chủ ảo 'ip / port' và khởi động lại mamp, miền này sẽ trở thành miền mặc định khi xem địa chỉ ip hoặc tên máy tính của máy tính cục bộ trên toàn mạng.

Đối với mục đích thử nghiệm, điều này hoạt động tốt trên tất cả các thiết bị trên mạng, bao gồm cả iPad. Nếu bạn muốn kiểm tra một máy chủ ảo khác, bạn chỉ cần trả lại cấu hình ip / cổng thành "*", sau đó gán lại miền khác cho địa chỉ ip của máy tính và khởi động lại.

Ưu điểm của cách tiếp cận đơn giản này là bạn có thể cung cấp quyền truy cập trực tiếp cho khách hàng vào các trang web phát triển của bạn khi bạn trên cùng một mạng mà không cần phải thông qua bất kỳ cấu hình nào trên máy của họ.

Hy vọng điều này sẽ giúp bất kỳ ai khác đang tìm kiếm giải pháp đơn giản.


1

Máy chủ DNS nội bộ là một trong những tùy chọn nhưng điều đó quá cồng kềnh để triển khai. Chúng tôi đã thử cài đặt mực làm máy chủ proxy nhưng điều đó cũng không hoạt động vì nó đang chuyển hướng URL đến máy chủ mới và chuyển hướng này cũng được nhìn thấy trên URL của trình duyệt.

Điều cuối cùng làm việc cho chúng tôi là cài đặt Fiddler trên một trong các máy chủ và sử dụng máy chủ này làm máy chủ proxy trên ipad. Fiddler cũng có một tính năng ánh xạ các miền phụ thành địa chỉ IP, tức là một cái gì đó tương tự như / etc / hosts.


1

Hướng dẫn rất hay để làm như vậy: http://egalo.com/2012/05/29/testing-mac-web-site-using-local-hostname-on-mobile-device/

Một cách khác là kết nối IPad qua Local Hotspot với MAC OS X của tôi và thiết lập chuyển tiếp cổng tới VM phát triển. Để đạt được điều này, tôi đã thực hiện các Bước sau:

  • trên MAC OS X tạo một liên kết WLAN-Hotspot cách thực hiện việc này
  • kết nối iPAD với Hotspot-WLAN (trên iPAD >> Cài đặt >> WLAN)
  • Thêm ServerAlias ​​vào máy ảo phát triển cục bộ (chi tiết bên dưới)
  • thiết lập chuyển tiếp ssh-cổng
    ssh -NL <IP-of-hotspot-host>:<source-port>:<url-to-local-vm>:80 <user-to-vm>
  • int Trình duyệt iPADs mở trang bằng IP
    <IP-of-hotspot-host>:<source-port>

Nơi lấy 'IP-of-hotspot-host':

Sau khi tạo điểm phát sóng, có một Điểm WLAN trong
cài đặt hệ thống MAC OS X >> Mạng >> WLAN

Thêm ServerAlias:

Tại máy ảo phát triển của tôi (Apache2) trong /etc/apache2/sites-available/dkr.dev.local, tôi phải thêm những thứ sau:

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

1

Nếu bạn đang khám phá điều này và một vài liên kết bên ngoài, bạn có thể sẽ tìm thấy câu trả lời sau:

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

Đó là về một máy chủ DNS nhẹ được gọi là dnsmasq. Siêu đơn giản, rất mạnh mẽ và có thể được sử dụng cùng với các máy chủ DNS bên trong hoặc bên ngoài của bạn.

Dễ dàng hơn nhiều so với việc cài đặt mực, loay hoay với Apache và các kỹ thuật khác sẽ tốn thời gian và rủi ro về tính "toàn vẹn" của cấu hình, môi trường phát triển, môi trường thử nghiệm, v.v.

Rất đáng để xem xét.

Tôi đã sử dụng nó như một công cụ thường xuyên để phát triển và kết nối mạng bình thường.


1

Sử dụng máy chủ DNS tùy chỉnh trên PC có thể giải quyết điều này. Tôi đang sử dụng và hoạt động hoàn hảo.

Kiểm tra https://technitium.com/dns/ để tải xuống máy chủ DNS tùy chỉnh. Được xây dựng bằng công nghệ .Net. Sau khi định cấu hình công cụ này, bạn cần thay đổi cài đặt DNS thành tùy chỉnh và đặt IP của PC. Để tránh thay đổi IP mỗi khi bạn khởi động lại PC, hãy sử dụng IP tĩnh trên PC.


0

Tôi sẽ thử Máy chủ chuyển tiếp (một phần của Afaria) có thể định hướng lại lưu lượng truy cập di động dựa trên các cấu hình.

Cập nhật: câu trả lời của tremoloqui có vẻ ít rắc rối hơn và rẻ hơn nhiều.


0

Các câu trả lời ở đây là chính xác. Thêm một chút kiến ​​thức: Những điều này sẽ không hoạt động với tính năng ghim cert. Những gì bạn có thể làm là (1) sử dụng chứng chỉ đại diện tên miền để hỗ trợ thử nghiệm vùng dev / test / qa của bạn. Và / hoặc (2) sử dụng máy chủ proxy ngược như Apache, theo đó bạn thay đổi nơi Apache định tuyến các yêu cầu trong mạng của bạn. Bây giờ, khi bạn tham gia thử nghiệm Ghim SSL thì bạn đã chết trong nước với các thiết bị vật lý và chỉ có thể xác thực bằng trình mô phỏng (ios) và trình giả lập (android).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.