2017-01-06 69 views
5

Nasza aplikacja do obsługi pojedynczych stron umieszcza filmy z serwisu YouTube dla użytkowników końcowych. Wszystko działa świetnie, jeśli użytkownik ma dostęp do domeny Youtube i do zawartości stron tej domeny.Jak sprawdzić, czy dana domena jest dostępna z przeglądarki?

Jednak często napotykamy użytkowników, których dostęp do serwisu YouTube jest zablokowany przez skrzynkę filtrów internetowych w ich sieci, taką jak https://us.smoothwall.com/web-filtering/. Wyzwanie polega na tym, że filtr faktycznie nie zabija żądania, po prostu zwraca kolejną stronę zamiast ze statusem HTTP 200. Strona zwykle mówi coś w stylu "hej, przepraszam, ta treść jest zablokowana".

Jedną z opcji jest próba pobrania https://www.youtube.com/favicon.ico w celu udowodnienia, że ​​domena jest osiągalna. Problem polega na tym, że filtry te zwykle wymagają niestandardowego certyfikatu SSL, aby umożliwić im sprawdzenie zawartości HTTP (patrz: https://us.smoothwall.com/ssl-filtering-white-paper/), więc nie mogę liczyć na to, że TLS łapie treść, która została zamieniona na mnie z niepoprawnym certyfikatem, a ja zamiast tego otrzymam całkowicie poprawny plik favicon.ico, z wyjątkiem innej witryny. Istnieje również cały problem CORS dotyczący wydania XHR z naszej domeny przeciwko domenie youtube.com, co oznacza, że ​​jeśli chcę uzyskać to favicon.ico, muszę to zrobić w stylu JSONP. Jednak nawet przy użyciu zwykłego starego <img> nie mogę przetestować zawartości obrazu z powodu CORS, zobacz Get image data in JavaScript?, więc utknąłem z takim podejściem.

Czy istnieją sprawdzone i niezawodne sposoby radzenia sobie z tą sytuacją i testowania możliwości osiągania poziomu przeglądarki w odniesieniu do konkretnej domeny?

Pozdrawiam.

Odpowiedz

2

Ogólnie rzecz biorąc, serwery proxy, które chcą się dobrze bawić, zazwyczaj opisują konwersację HTTP za pomocą dodatkowych nagłówków odpowiedzi, które można wykryć.

Jednym z podejść do budowy detektora typu "człowiek w środku" może być sprawdzenie tych nagłówków odpowiedzi i porównanie wyników z czasu, gdy znajduje się za MITM, a kiedy nie.

Wiele publicznych stron internetowych wyświetla nagłówki dla dowolnego żądania; redbot to jeden.

Może więc możesz poprosić stronę, której treść jest modyfikowana, aby odwiedził adres URL, taki jak: youtube favicon via redbot.

Po zebraniu wystarczającej liczby próbek można w sposób heurystyczny zbudować wykrywacz.

Ponadto, niektóre CDN (np. Akamai) pozwolą klientom odwiedzać adresy URL ze zdalnych lokalizacji serwerów proxy w ich sieci. To może zapewnić lepsze pokrycie, chociaż jest mało prawdopodobne, że znajduje się za blokującą zaporą.

Powiązane problemy