Старонка чату загружаецца, а жывое злучэнне не працуе: дзе шукаць
Старонка і транспарт чату — гэта розныя запыты. Праверце WebSocket, паток падзей або доўгае апытанне, затым аддзяліце наладку, дастаўку і час жыцця.
Адкрыйце панэль сеткі перад загрузкай старонкі чату, затым знайдзіце запыт, які пераносіць паведамленні, а не той, які малюе абалонку. Дакумент, скрыпты, абмен уваходу і транспарт чату могуць ісці на розныя хасты. Большасць паведамленняў пра тое, што VPN зламаў чат, насамрэч апісваюць збой аднаго з гэтых чатырох запытаў. Назірайце за імі па чарзе, і адказ звычайна бачны ў першыя дзве хвіліны.
Знайдзіце запыт, які пераносіць паведамленні
Адфільтруйце па тыпе, калі старонка супакоіцца: WebSocket з’яўляецца асобным запісам, паток падзей застаецца адкрытым з узрастаючым адказам, а доўгае апытанне паўтараецца праз роўны інтэрвал. Запішыце схему, хост, порт і статус таго, які пераносіць абнаўленні. Адзначце, ці пачаўся ён да або пасля ўваходу, бо транспарт, адкрыты перад аўтэнтыфікацыяй, звычайна мае іншы дызайн, чым адкрыты пасля яе. Прачытайце загалоўкі запыту для запыту павышэння або прынятага тыпу змесціва, бо яны вызначаюць транспарт, які разгорнутая старонка фактычна выбрала.
Старыя форумныя паведамленні апісваюць транспарты, якія прадукты перасталі выкарыстоўваць гады таму, таму давярайце таму, што запісаў браўзер, а не артыкулу. Калі запіс цалкам адсутнічае, кліенцкі код мог ніколі не спрабаваць злучэнне, што ўказвае на больш ранні збой скрыпта або канфігурацыі. Старонка, якая загружаецца, даказвае толькі, што дакумент прыбыў, і гэтае адрозненне вырашае, ці адладжваеце вы наогул сетку.
Наладка, дастаўка і час жыцця адмаўляюць па-рознаму
WebSocket адкрываецца HTTP-павышэннем, на якое адказвае статус 101, і ўсё пасля гэтага — абрамленыя паведамленні, а не загрузка старонак, дзве стадыі, якія RFC 6455 трымае відавочна асобна. Паток падзей адказвае патокавым тыпам змесціва і трымае цела адказу адкрытым. Абодва могуць не адкрыцца, адкрыцца і нічога не даставіць, або адкрыцца, даставіць і потым ціха памерці.
wscat -c wss://chat.example.com/socket -H "Origin: https://chat.example.com"
curl -N -H "Accept: text/event-stream" https://chat.example.com/events
Злавіце першы значны збой, перш чым чапаць профіль, бо тры тэрміны ўказваюць на розныя ўзроўні. Калі рукапоціск ніколі не завяршаецца, параўнайце яго са звычайным HTTPS-запытам да таго ж хоста, каб убачыць, ці даходзіць да яго хоць што-небудзь. Калі ён завяршаецца і паведамленні не прыходзяць, назірайце за кадрамі або целам патоку, пакуль хтосьці з іншага ўліковага запісу адпраўляе тэставае паведамленне. Калі ўсё працуе, а потым спыняецца, запішыце дакладны час і код закрыцця, бо гэтая пара вызначае, які бок здаўся.
Код 1006 азначае, што сокет зачынены без кадра закрыцця, менавіта так з пункту гледжання браўзера выглядае пасярэднік або тайм-аўт бяздзейнасці. Пульс VPN не даказвае, што ўнутраная сесія праграмы яшчэ жывая.
Жывы хост — асобнае прызначэнне
Бэкенды чату часта жывуць на ўласным імені хоста, часам на іншым порце або за асобным сертыфікатам. Гэтае прызначэнне патрабуе ўласнага развязання, маршруту і апрацоўкі проксі, а раздзельнае тунэляванне можа ўключыць старонку і выключыць сокет. Развяжыце жывое імя хоста з кліенцкай машыны і пераканайцеся, што яно адказвае тым адрасам, які вы чакаеце ў гэтай сетцы. Праверце ланцужок сертыфікатаў менавіта для гэтага імя хоста, бо шаблон, які пакрывае сайт, не заўсёды пакрывае канчатковы пункт сокета.
Калі на шляху ёсць проксі, пераканайцеся, што ён дазваляе павышэнне або доўгае адказанне, а не буферызуе яго. Карпаратыўныя проксі, якія перапісваюць HTML, часта дрэнна апрацоўваюць павышэнні WebSocket, што дае старонку, якая адлюстроўваецца, пакуль чат ніколі не падключаецца. Такім чынам, два запыты да аднаго прадукту — гэта не два запыты да аднаго хоста.
Выпраўце спіс прызначэнняў, а не праверкі бяспекі
Выпраўленне спісу прызначэнняў — гэта змена маршрутызацыі, і яна належыць таму, хто валодае маршрутам. Паслабленне праверкі сертыфікатаў або выдаленне загалоўка Origin — гэта змяненне бяспекі, і яно належыць таму, хто валодае палітыкай, а гэта рэдка той чалавек, які адладжвае тыкет. Самы хуткі спосаб прымусіць злучэнне з’явіцца — звычайна самы хуткі спосаб зрабіць інцыдэнт магчымым.
Спытайце ўладальніка праграмы, якія крыніцы прымае бэкенд, перш чым нешта змяняць, і перадайце гэты адказ таму, хто кіруе проксі. Калі памылка сертыфіката з’яўляецца толькі праз тунель, агледзіце перахопліваючую прыладу, а не ўсталёўвайце абыход.
Запішыце дастаткова для перадачы
Карысны артэфакт кароткі: URL старонкі, жывы канчатковы пункт, вынік рукапоціску, час першага збою і ці спрабавалі перападключэнне. Дадайце назву профілю VPN і сетку, у якой вы былі, і любы чытач зможа паўтарыць тэст, не задаючы шэсць пытанняў. Выдаліце кукі, загалоўкі аўтарызацыі і целы паведамленняў, і аддавайце перавагу здымку слупка часу перад поўным экспартам архіва. Кадры і сеткавыя архівы могуць змяшчаць прыватныя паведамленні і токены сесій, таму агледзіце перад прымацаваннем.
Калі збой — гэта ціхае закрыццё, уключыце код закрыцця і інтэрвал бяздзейнасці, які яму папярэднічаў, бо гэтая пара звычайна вызначае ўладальніка тайм-аўту. Перадайце запіс уладальніку праграмы або шлюза, а не спрабуйце самі ўгадаць значэнне тайм-аўту. Іх адказ пра падтрымоўваныя паводзіны захавання злучэння — гэта тое, што закрывае тыкет.