Captive portal popups: คู่มือการแตกหัก


13

ฉันกำลังใช้พอร์ทัลเชลยอินเตอร์เน็ตไร้สายด้วยตนเอง ฉันมีทุกอย่างที่ใช้งานได้ดี แต่เพียงปมข้อเดียว: ฉันต้องการให้ทุกคนเห็นป๊อปอัพพอร์ทัลระบบปฏิบัติการ (หรือระบบปฏิบัติการคอมพิวเตอร์) บนมือถือเพื่อรับประสบการณ์ที่ไร้ที่ติ

เนื่องจากแต่ละคนมีวิธีการทำแบบบิดเบี้ยวของตัวเองดูเหมือนว่าฉันไม่สามารถรับประสบการณ์ข้ามแพลตฟอร์มที่สอดคล้องกันได้

เพื่อให้สิ่งนี้เกิดขึ้นฉันสามารถช่วยอธิบาย (1) คำขอ URL ใดจากไคลเอนต์ WiFi ที่ต้องเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบและ / หรือ (2) การกำหนดค่าเว็บเซิร์ฟเวอร์ nginx หรือ apache ใดที่สามารถใช้เปลี่ยนเส้นทาง WiFi ลูกค้าเข้าสู่หน้าเข้าสู่ระบบหรือไม่

หน้าเข้าสู่ระบบของฉันเป็นเชลยพอร์ทัลในตัวอย่างนี้คือhttp: //captiveportal.lan นี่คือระบบปฏิบัติการที่ฉันพยายามแก้ไข


Android 4/5/6

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

Android เวอร์ชันก่อนหน้า

  • Apache:
  • nginx:

iOS 8

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

  • nginx:

iOS เวอร์ชันก่อนหน้า

  • Apache:
  • nginx:


โทรศัพท์ Windows

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


Windows 7 \ 8 \ 10

  • Apache: ดู windows phone (ใช้งานได้บน win7)
  • nginx:

Mac OS

  • Apache:
  • nginx:

Amazon Kindle - มีป๊อปอัปหรือไม่

  • Apache:
  • nginx:

5
ไม่มันไม่กว้างเกินไปมันเป็นปัญหาของหลายแพลตฟอร์ม ปัญหาหลายแพลตฟอร์มมากที่สุดอาจจะมี มันยังมาถึงสถานะ "คำถามที่น่าทึ่ง" (มากกว่า 2,500 ครั้ง) ดังนั้นผู้คนจึงให้ความสนใจและคุณกำลังก่อความเสียหายอย่างใหญ่หลวงแก่ทุกคนโดยป้องกันไม่ให้มีส่วนร่วมจากการเทลงมาเพื่อความอับอาย!
ppparadox

ขอบคุณมากสำหรับการโพสต์; มันทำให้ฉันทำสิ่งนี้ได้ที่unix.stackexchange.com/questions/386242/…
Rui F Ribeiro

คำตอบ:


6

ระบบปฏิบัติการมือถือทั้งหมดเพียงตรวจสอบหน้าเว็บเพื่อตัดสินใจว่าพวกเขาอยู่เบื้องหลังพอร์ทัลเชลยหรือไม่

กลไกนี้คือ:

  1. GET / POST http://foo.com/bar.html
  2. หาก bar.html == [เนื้อหาที่คาดหวัง]> เปิดอินเทอร์เน็ต
  3. หาก bar.html! = [เนื้อหาที่คาดหวัง]> Captive Portal
  4. ถ้า bar.html [status]! = SUCCESS> ไม่มีเครือข่าย

นอกจากนี้สำหรับ iOS คุณต้องมีโดเมนสำหรับเครือข่าย WiFi ของคุณเนื่องจากถือว่าเครือข่ายที่ไม่มีการเข้าถึงนั้นเป็นเครือข่ายในบ้านและเพียงทำเครื่องหมายว่าเป็นเครือข่ายที่ไม่มีแทน Captive Portal

เพียงตรวจสอบให้แน่ใจว่าเปลี่ยนเส้นทาง URL ต่อไปนี้ไปยังพอร์ทัลที่เป็นเชลยของคุณอย่างชัดเจนด้วย HTTP Success:

Android / Chromebook:

  • clients3.google.com

iOS 6:

  • gsp1.apple.com
  • * .akamaitechnologies.com

iOS 7:

  • www.appleiphonecell.com
  • www.airport.us
  • * .apple.com.edgekey.net
  • * .akamaiedge.net
  • * .akamaitechnologies.com

iOS 8/9:

ของ windows

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

ผู้ค้าหลายรายได้เริ่มใช้ตัวแทนผู้ใช้ "CaptiveNetworkSupport" แม้ว่าจะไม่เหมือนวิธี URL ด้านบน ตรวจสอบว่า UA นั้นและให้หน้าพอร์ทัลของคุณ ... ไม่ทำงาน 100%

ฉันใช้วิธี URL และมันก็ใช้ได้ดี


สนใจที่จะแบ่งปันเว็บเซิร์ฟเวอร์บางตัวที่ทำงาน conf \ firewall rules \ php snippets ที่คุณใช้เพื่อรับป๊อปอัปหรือไม่?
ppparadox

ดูเหมือนว่า Android v6 กำลังใช้ url อื่น connectivitycheck.gstatic.com ซึ่งเป็นที่กล่าวถึงที่นี่
DavidT

ทำไมคุณต้องเปลี่ยนเส้นทาง URL ทดสอบอย่างชัดเจน คุณจะไม่แสดงหน้าล็อกอินสำหรับทุก URL จนกว่าผู้ใช้จะเข้าสู่ระบบใช่ไหม
AShelly

3

Amazon Kindle (ไฟ)

Amazon Kindle (Fire) ทำการร้องขอต่อไปนี้และหากไม่สามารถเรียกคืนได้ "... สันนิษฐานว่าผู้ใช้ต้องเข้าสู่ระบบและโยนหน้าจอเข้าสู่ระบบ":

iOS 8.4

สำหรับ iOS ล่าสุดฉันต้องจับคู่ URIs ทั้งหมดเพื่อขอhttp://captive.apple.com - ไม่ใช่แค่ "/hotspot-detect.html"

ไคลเอ็นต์ iOS 8.4 กำลังทำการร้องขอด้วย URI ที่สร้างขึ้นแบบสุ่ม (เช่น "/xmqPyZUv/3r8jTjv8.html" และ "/7exN0TV7q0COX0TXTXTXT") ไปยังโดเมนที่ตรวจจับได้ใน to1 ตรวจจับการค้นหาไปยัง URL


1
iOS 8.4 ตั้งค่า UserAgent เป็น "CaptiveNetworkSupport" หรือไม่ สนใจที่จะแบ่งปันเว็บเซิร์ฟเวอร์บางตัวที่ทำงาน conf \ firewall rules \ php snippets ที่คุณใช้เพื่อรับป๊อปอัปหรือไม่? นอกจากนี้ทำไมบางคนถึงไม่ลงคะแนนคุณโดยไม่ต้องกังวลที่จะอธิบายว่าทำไม คนโง่ ...
ppparadox

สตริงตัวแทนที่แน่นอนคือ "CaptiveNetworkSupport-277.10.5 wispr" เมื่อฉันเปลี่ยนเส้นทางคำขอเหล่านี้ (แสดงรายการในคำถามนี้) ไปยังหน้าเข้าสู่ระบบ Apple iOS จะปรากฏหน้าเข้าสู่ระบบขึ้นมาและ Android จะแสดงแถบส่วนหัวของการเข้าสู่ระบบ หลังจากล็อกอินสำเร็จในหน้าล็อกอินระบบพอร์ทัลแบบ Captive ต้องอนุญาตการร้องขอ HTTP เหล่านี้ให้สำเร็จเพื่อให้หน้าต่างป๊อปอัพและแถบล็อกอินหายไป ฉันได้ทดสอบสิ่งนี้ในพอร์ทัลที่กำหนดเองที่ฉันสร้างขึ้นโดยใช้เฉพาะเซิร์ฟเวอร์ Linux, dnsmasq และ Apache httpd
Russell E Glaue

ลืมถามว่า Kindle ติดตั้งตัวแทนผู้ใช้นั้นด้วยหรือไม่
ppparadox

1
สำหรับจุดที่ฉันเห็น "Dalvik / 2.1.0 (Linux; U; Android 5.0.1; VS985 4G Build / LRX21Y)" (อาจเป็นแอปที่ติดตั้งหรือไม่) หัวข้อนี้mobileread.com/forums/showthread.php?t=188439พูดว่า "Mozilla /5.0 (Linux; เช่น iPhone; U; en-US) AppleWebKit / 528.5 + (KHTML เช่น Gecko, Safari / 528.5 +) เวอร์ชัน / 4.0 "
Russell E Glaue

1
@ppparadox ฉันไม่รู้ว่าทำไมฉันถึงได้คะแนนโหวตไม่กี่วินาทีหลังจากที่โพสต์ ถ้าคุณชอบผลงานของฉันโปรดให้ฉัน upvote ขอบคุณ
Russell E Glaue
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.