Cửa sổ bật lên cổng thông tin Captive: hướng dẫn dứt khoát [đóng]


12

Tôi đang thực hiện thủ công một cổng bị khóa WiFi. Tôi đã làm mọi thứ khá hiệu quả NHƯNG một cú huých duy nhất: tôi muốn tất cả mọi người thấy cửa sổ bật lên cổng thông tin lưu trữ hệ điều hành di động của họ (hoặc hệ điều hành máy tính) để có trải nghiệm hoàn hảo.

Vì mỗi người trong số họ có cách làm xoắn riêng, dường như tôi không thể có được trải nghiệm đa nền tảng nhất quán.

Để thực hiện điều này, tôi có thể có một số trợ giúp để mô tả (1) yêu cầu URL nào từ ứng dụng khách WiFi cần được chuyển hướng đến trang đăng nhập và / hoặc (2) cấu hình máy chủ web nginx hoặc apache có thể được sử dụng để chuyển hướng WiFi khách hàng đến một trang đăng nhập?

Trang đăng nhập cổng bị khóa của tôi trong ví dụ này là http: //captiveportal.lan . Dưới đây là một số Hệ điều hành tôi đang cố gắng giải quyết vấn đề này.


Android 4/5/6

  • Apache:
    RedirectMatch 302 /generate_204 http://captiveportal.lan
  • nginx:?

Các phiên bản Android trước

  • Apache :?
  • nginx:?

iOS 8

  • Apache .htaccess:
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^CaptiveNetworkSupport(.*)$ [NC]
    RewriteRule ^(.*)$ http://captiveportal.lan [L,R=302]

  • nginx:?

Các phiên bản iOS trước

  • Apache :?
  • nginx:?


Điện thoại Windows

  • Apache:
    RedirectMatch 302 /ncsi.txt http://captiveportal.lan
  • nginx:?


Windows 7 \ 8 \ 10

  • Apache: xem windows phone (hoạt động trên win7).
  • nginx:?

hệ điều hành Mac

  • Apache :?
  • nginx:?

Amazon Kindle - nó có một cửa sổ bật lên không?

  • Apache :?
  • nginx:?

5
Không, nó không quá rộng, nó chỉ đơn giản là một vấn đề đa nền tảng. Vấn đề đa nền tảng NHẤT có thể có, có lẽ. Nó cũng đã đạt đến trạng thái "câu hỏi đáng chú ý" (hơn 2500 lượt xem) vì vậy mọi người thực sự quan tâm đến nó và bạn đang đưa ra một sự bất đồng lớn cho tất cả mọi người bằng cách ngăn chặn sự đóng góp đổ vào.
ppparadox

Cảm ơn rất nhiều vì bài viết; nó cho phép tôi làm điều này unix.stackexchange.com/questions/386242/ Khăn
Rui F Ribeiro

Câu trả lời:


5

Tất cả các hệ điều hành di động chỉ cần kiểm tra một trang web để quyết định xem chúng có đứng sau một cổng bị giam giữ hay không.

Cơ chế là thế này:

  1. NHẬN / POST http://foo.com/bar.html
  2. Nếu bar.html == [nội dung dự kiến]> Mở Internet
  3. Nếu bar.html! = [Nội dung dự kiến]> Cổng thông tin Captive
  4. Nếu bar.html [status]! = THÀNH CÔNG> Không có mạng

Ngoài ra, đối với iOS, bạn cần phải có một tên miền cho mạng WiFi của mình vì nó giả sử mạng không có tên miền không có quyền truy cập là mạng gia đình và chỉ đánh dấu nó là Không có Mạng thay vì Cổng thông tin Captive.

Chỉ cần đảm bảo chuyển hướng rõ ràng các url sau đến cổng bị khóa của bạn với HTTP Thành công:

Android / Chromebook:

  • client3.google.com

hệ điều hanh 6:

  • gsp1.apple.com
  • * .akamaitechnology.com

IOS 7:

  • www.appleiphonecell.com
  • www.airport.us
  • * .apple.com
  • * .akamaiedge.net
  • * .akamaitechnology.com

iOS 8/9:

các cửa sổ

  • ipv6.msftncsi.com
  • www.msftncsi.com

Nhiều nhà cung cấp cũng đã bắt đầu sử dụng "CaptiveNetworkSupport" của Tác nhân người dùng, mặc dù nó không phổ biến như phương pháp URL ở trên. Chỉ cần kiểm tra UA đó và luôn cung cấp cho nó trang cổng thông tin của bạn ... mặc dù không hoạt động 100%.

Tôi sử dụng phương pháp URL và nó hoạt động tốt.


Muốn chia sẻ một số máy chủ web đang hoạt động conf \ tường lửa \ đoạn trích php bạn sử dụng để có được cửa sổ bật lên?
ppparadox

Có vẻ như Android v6 đang sử dụng một url khác. Connectioncheck.gstatic.com được đề cập ở đây
DavidT

Tại sao bạn phải chuyển hướng rõ ràng các URL kiểm tra? Bạn sẽ không chỉ phục vụ trang đăng nhập cho mỗi URL cho đến khi người dùng đăng nhập?
HỎI 2/12/2016

2

Amazon Kindle (Lửa)

Amazon Kindle (Fire) đưa ra yêu cầu sau và nếu không thể truy xuất được "... nó giả định rằng người dùng phải đăng nhập và đưa lên màn hình Đăng nhập.":

iOS 8.4

Đối với iOS mới nhất, tôi phải khớp tất cả các URI cho các yêu cầu với http://captive.apple.com - không chỉ là "/hotspot-detect.html".

Các khách hàng iOS 8.4 đang thực hiện các yêu cầu với các URI được tạo ngẫu nhiên (ví dụ: "/ xmqPyZUv / 3r8jTjv8.html" và "/7NN / 1/7


1
IOS 8.4 có đặt UserAgent thành "CaptiveNetworkSupport" không? Muốn chia sẻ một số máy chủ web đang hoạt động conf \ tường lửa \ đoạn trích php bạn sử dụng để có được cửa sổ bật lên? Ngoài ra, tại sao có ai đó hạ thấp bạn mà không bận tâm giải thích tại sao? Những người ngu ngốc ...
ppparadox

Chuỗi tác nhân chính xác là "CaptiveNetworkSupport-277.10.5 Wispr". Khi tôi chuyển hướng các yêu cầu này (được liệt kê trong câu hỏi này) đến trang đăng nhập, Apple iOS sẽ bật lên trang đăng nhập và Android sẽ hiển thị thanh tiêu đề đăng nhập. Sau khi đăng nhập thành công trên trang Đăng nhập, hệ thống cổng bị khóa phải cho phép các yêu cầu HTTP này thành công để cửa sổ bật lên và thanh đăng nhập biến mất. Tôi đã thử nghiệm thành công điều này trong một cổng bị khóa tùy chỉnh mà tôi đã tạo chỉ bằng máy chủ Linux, dnsmasq và Apache httpd.
Russell E Glaue

Quên hỏi nếu Kindle cũng thiết lập tác nhân người dùng đó.
ppparadox

1
Đối với kindle tôi đang thấy "Dalvik / 2.1.0 (Linux; U; Android 5.0.1; VS985 4G Build / LRX21Y)" (có thể đó là một ứng dụng kindle?). Chủ đề này mobileread.com/forums/showthread.php?t=188439 nói "Mozilla /5.0 (Linux; như iPhone; U; en-US) AppleWebKit / 528.5 + (KHTML, như Gecko, Safari / 528.5 +) Phiên bản / 4.0 "
Russell E Glaue

1
@ppparadox Tôi không biết lý do tại sao tôi đã bỏ phiếu xuống giây sau khi tôi đăng. Nếu bạn thích sự đóng góp của tôi, xin vui lòng cho tôi một upvote. Cảm ơn.
Russell E Glaue
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.