{"id":87043,"date":"2020-07-02T19:42:04","date_gmt":"2020-07-02T17:42:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8"},"modified":"2020-07-02T19:42:04","modified_gmt":"2020-07-02T17:42:04","slug":"izuchaem-voip-dvizhok-mediastreamer2-chast-8","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","title":{"rendered":"Badamy silnik VoIP Mediastreamer2. Cz\u0119\u015b\u0107 8","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Materia\u0142 artyku\u0142u pochodzi z mojego <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">kana\u0142u Zen<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Badamy silnik VoIP Mediastreamer2. Cz\u0119\u015b\u0107 8\" src=\"\/wp-content\/uploads\/2020\/07\/ddc5dba3a090dec9927b46a82dda760f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"struktura-rtp-paketa\">Struktura pakietu RTP<\/h2>\n<p><\/p>\n<p>W poprzedniej <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496490\/\">artyku\u0142<\/a><\/noindex> my za pomoc\u0105 <em>TShark<\/em> przeprowadzili\u015bmy przechwytywanie pakiet\u00f3w RTP, kt\u00f3rymi wymienia\u0142y si\u0119 nasze urz\u0105dzenia odbiorcze i nadawcze. A w tym artykule pokolorujemy elementy pakietu w r\u00f3\u017cne kolory i om\u00f3wimy ich przeznaczenie. <\/p>\n<p><\/p>\n<p>Przyjrzyjmy si\u0119 temu samemu pakietowi, ale ju\u017c z pokolorowanymi polami i z wyja\u015bniaj\u0105cymi podpisami:<br \/>\n<img decoding=\"async\" alt=\"Badamy silnik VoIP Mediastreamer2. Cz\u0119\u015b\u0107 8\" src=\"\/wp-content\/uploads\/2020\/07\/a2ee8fb10bc6daa48dcd0bc9a8596fd7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>W dolnej cz\u0119\u015bci listingu pokolorowane s\u0105 bajty, kt\u00f3re tworz\u0105 pakiet RTP, a on sam jest \u0142adunkiem u\u017cytecznym pakietu UDP (jego nag\u0142\u00f3wek jest otoczony czarn\u0105 lini\u0105). Kolorowe t\u0142a oznaczaj\u0105 bajty nag\u0142\u00f3wka RTP, a zielonym kolorem wyr\u00f3\u017cniono blok danych, kt\u00f3ry zawiera \u0142adunek u\u017cyteczny pakietu RTP. Dane s\u0105 przedstawione w formacie szesnastkowym. W naszym przypadku jest to sygna\u0142 d\u017awi\u0119kowy skompresowany zgodnie z prawem u (\u03bc-law), tzn. jeden pr\u00f3bka ma rozmiar 1 bajta. Poniewa\u017c u\u017cyli\u015bmy domy\u015blnego cz\u0119stotliwo\u015bci pr\u00f3bkowania (8000 Hz), przy cz\u0119stotliwo\u015bci pakiet\u00f3w 50 Hz ka\u017cdy pakiet RTP powinien zawiera\u0107 160 bajt\u00f3w \u0142adunku u\u017cytecznego. To w\u0142a\u015bnie zobaczymy, licz\u0105c bajty w zielonym obszarze, powinno ich by\u0107 10 linii. <\/p>\n<p><\/p>\n<p>Zgodnie z norm\u0105, ilo\u015b\u0107 danych w \u0142adunku u\u017cytecznym powinna by\u0107 wielokrotno\u015bci\u0105 czterech, czyli powinna zawiera\u0107 ca\u0142kowit\u0105 liczb\u0119 czterobajtowych s\u0142\u00f3w. Je\u015bli zdarzy si\u0119, \u017ce tw\u00f3j \u0142adunek u\u017cyteczny nie b\u0119dzie odpowiada\u0142 tej regule, nale\u017cy doda\u0107 bajty o zerowych warto\u015bciach na ko\u0144cu \u0142adunku u\u017cytecznego i ustawi\u0107 bit Padding (uzupe\u0142nienie). Ten bit znajduje si\u0119 w pierwszym bajcie nag\u0142\u00f3wka RTP i jest pokolorowany turkusowym kolorem. Zauwa\u017c, \u017ce wszystkie bajty \u0142adunku u\u017cytecznego maj\u0105 warto\u015b\u0107 0xFF \u2014 tak wygl\u0105da cisza w formacie u-law.<\/p>\n<p><\/p>\n<p>Nag\u0142\u00f3wek pakietu RTP sk\u0142ada si\u0119 z 12 obowi\u0105zkowych bajt\u00f3w, ale w dw\u00f3ch przypadkach mo\u017ce by\u0107 d\u0142u\u017cszy:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Gdy pakiet niesie sygna\u0142 d\u017awi\u0119kowy uzyskany przez miksowanie sygna\u0142\u00f3w z kilku \u017ar\u00f3de\u0142 (strumieni RTP), wtedy po pierwszych 12 bajtach nag\u0142\u00f3wka znajduje si\u0119 tabela ze list\u0105 identyfikator\u00f3w \u017ar\u00f3de\u0142, kt\u00f3rych \u0142adunki u\u017cyteczne zosta\u0142y wykorzystane do stworzenia \u0142adunku tego pakietu. W tym samym czasie w czterech ni\u017cszych bitach pierwszego bajtu nag\u0142\u00f3wka (pole <em>Liczba identyfikator\u00f3w \u017ar\u00f3de\u0142 przyczynowych<\/em>) wskazuje liczb\u0119 \u017ar\u00f3de\u0142. Rozmiar pola wynosi 4 bity, w zwi\u0105zku z czym tabela mo\u017ce zawiera\u0107 do 15 identyfikator\u00f3w \u017ar\u00f3de\u0142. Ka\u017cdy z nich zajmuje 4 bajty. Tabela ta jest u\u017cywana do organizacji konferencyjnych rozm\u00f3w.<\/p>\n<p>\n<\/li>\n<li>\n<p>Gdy nag\u0142\u00f3wek ma rozszerzenie. W takim przypadku w pierwszym bajcie nag\u0142\u00f3wka ustawiany jest bit <strong>X<\/strong>. W rozszerzonym nag\u0142\u00f3wku, po tabeli uczestnik\u00f3w (je\u015bli s\u0105), znajduje si\u0119 nag\u0142\u00f3wek rozszerzenia o rozmiarze jednego s\u0142owa, a po nim s\u0142owa rozszerzenia. Rozszerzenie to zestaw bajt\u00f3w, kt\u00f3re mo\u017cna wykorzysta\u0107 do przesy\u0142ania dodatkowych danych. Standard nie okre\u015bla formatu tych danych \u2014 mo\u017ce by\u0107 on dowolny. Na przyk\u0142ad mog\u0105 to by\u0107 dodatkowe ustawienia dla urz\u0105dzenia, kt\u00f3re odbiera pakiety RTP. Dla niekt\u00f3rych zastosowa\u0144 jednak opracowano standardy rozszerzonego nag\u0142\u00f3wka. Zrobiono tak na przyk\u0142ad dla \u015brodk\u00f3w \u0142\u0105czno\u015bci w standardzie <em>ED-137 (Standardy interoperacyjno\u015bci dla komponent\u00f3w VoIP ATM)<\/em>. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Teraz przyjrzyjmy si\u0119 polom nag\u0142\u00f3wka bardziej szczeg\u00f3\u0142owo. Poni\u017cej znajduje si\u0119 kanoniczny obrazek ze struktur\u0105 nag\u0142\u00f3wka RTP, kt\u00f3ry r\u00f3wnie\u017c pomalowa\u0142em w te same kolory.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Badamy silnik VoIP Mediastreamer2. Cz\u0119\u015b\u0107 8\" src=\"\/wp-content\/uploads\/2020\/07\/b8839a56fbe4ee484c9d6b19714b541e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>VER<\/strong> \u2014 numer wersji protoko\u0142u (aktualna wersja to 2);<\/p>\n<p><\/p>\n<p><strong>P<\/strong> \u2014 flaga, kt\u00f3ra jest ustawiana w przypadkach, gdy pakiet RTP jest uzupe\u0142niany pustymi bajtami na ko\u0144cu;<\/p>\n<p><\/p>\n<p><strong>X<\/strong> \u2014 flaga, \u017ce nag\u0142\u00f3wek jest rozszerzony;<\/p>\n<p><\/p>\n<p><strong>CC<\/strong> \u2014 zawiera liczb\u0119 identyfikator\u00f3w CSRC, kt\u00f3re nast\u0119puj\u0105 po sta\u0142ym nag\u0142\u00f3wku (po s\u0142owach 1..3), tabela na rysunku nie jest pokazana;<\/p>\n<p><\/p>\n<p><strong>M<\/strong> \u2014 znacznik pocz\u0105tku ramki lub obecno\u015bci mowy w kanale (je\u015bli u\u017cywany jest detektor pauzy w mowie). Je\u015bli odbiornik nie zawiera detektora pauzy w mowie, ten bit powinien by\u0107 ustawiony permanentnie;<\/p>\n<p><\/p>\n<p><strong>PTYPE<\/strong> \u2014 wskazuje format \u0142adunku u\u017cytkowego;<\/p>\n<p><\/p>\n<p><strong>Numer sekwencyjny<\/strong> \u2014 numer pakietu, u\u017cywany do odbudowy porz\u0105dku odtwarzania pakiet\u00f3w, poniewa\u017c w rzeczywisto\u015bci pakiety mog\u0105 dotrze\u0107 do odbiornika w innym porz\u0105dku ni\u017c zosta\u0142y wys\u0142ane. Warto\u015b\u0107 pocz\u0105tkowa powinna by\u0107 losowa, aby w przypadku szyfrowania strumienia RTP utrudni\u0107 jego z\u0142amanie. Pole to pozwala r\u00f3wnie\u017c wykrywa\u0107 zagubione pakiety;<\/p>\n<p><\/p>\n<p><strong>Znacznik czasu<\/strong> \u2014 znacznik czasu. Czas jest mierzony w pr\u00f3bkach sygna\u0142u, tzn. je\u015bli pakiet zawiera 160 pr\u00f3bek, znacznik czasu nast\u0119pnego pakietu b\u0119dzie wi\u0119kszy o 160. Pocz\u0105tkowa warto\u015b\u0107 znacznika czasu powinna by\u0107 losowa;<\/p>\n<p><\/p>\n<p><strong>SSRC<\/strong> \u2014 identyfikator \u017ar\u00f3d\u0142a pakietu, kt\u00f3ry musi by\u0107 unikalny. Lepiej go generowa\u0107 losowo przed uruchomieniem strumienia RTP.<\/p>\n<p><\/p>\n<p>Je\u015bli zamierzasz opracowa\u0107 sw\u00f3j w\u0142asny nadajnik lub odbiornik pakiet\u00f3w RTP, b\u0119dziesz musia\u0142 wielokrotnie analizowa\u0107 swoje pakiety, aby zwi\u0119kszy\u0107 wydajno\u015b\u0107. Polecam zapozna\u0107 si\u0119 z wykorzystaniem filtrowania pakiet\u00f3w w TShark, kt\u00f3re pozwala na przechwytywanie tylko tych pakiet\u00f3w, kt\u00f3re s\u0105 dla Ciebie istotne. W sytuacji, gdy w sieci dzia\u0142a wiele urz\u0105dze\u0144 RTP, to bardzo cenne. W linii polece\u0144 TShark parametry filtrowania okre\u015bla si\u0119 za pomoc\u0105 opcji \"-f\". U\u017cyli\u015bmy tej opcji, gdy chcieli\u015bmy przechwyci\u0107 pakiety z portu 8010:<br \/>\n<code>-f \"udp port 8010\"<\/code><br \/>\nParametry filtrowania to w zasadzie zbi\u00f3r kryteri\u00f3w, kt\u00f3rym powinien odpowiada\u0107 \"przechwytywany\" pakiet. Warunek mo\u017ce sprawdza\u0107 adres, port, warto\u015b\u0107 konkretnego bajtu w pakiecie. Warunki mo\u017cna \u0142\u0105czy\u0107 operacjami logicznymi \"AND\", \"OR\" itd. To bardzo pot\u0119\u017cne narz\u0119dzie.<\/p>\n<p><\/p>\n<p>Je\u015bli chcesz zobaczy\u0107 dynamik\u0119 zmian p\u00f3l w pakietach, musisz podwoi\u0107 wyj\u015bcie <em>TShark<\/em> do pliku, jak pokazano w poprzednim artykule, za pomoc\u0105 przekazywania wyj\u015bcia <em>TShark<\/em> na wej\u015bcie <em>tee<\/em>. Nast\u0119pnie otwieraj\u0105c plik logu za pomoc\u0105 <em>less, vim<\/em> lub innego narz\u0119dzia, kt\u00f3re mo\u017ce szybko pracowa\u0107 z ogromnymi plikami tekstowymi i wykonywa\u0107 wyszukiwanie wierszy, b\u0119dziesz m\u00f3g\u0142 ustali\u0107 wszystkie niuanse zachowania p\u00f3l pakiet\u00f3w w strumieniu RTP.<\/p>\n<p><\/p>\n<p>Je\u015bli b\u0119dziesz potrzebowa\u0142 nas\u0142uchiwa\u0107 sygna\u0142 przesy\u0142any przez strumie\u0144 RTP, musisz skorzysta\u0107 z wersji <em>TShark<\/em> z interfejsem graficznym <em>Wireshark<\/em>. Dzi\u0119ki prostym manipulacjom mysz\u0105 mo\u017cesz tam wys\u0142ucha\u0107, a tak\u017ce zobaczy\u0107 oscylogram sygna\u0142u. Ale pod jednym warunkiem \u2014 je\u015bli b\u0119dzie on zakodowany w formacie u-law lub a-low.<\/p>\n<p><\/p>\n<p>W nast\u0119pnej <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496874\/\">artyku\u0142<\/a><\/noindex> stworzymy z Tob\u0105 duplexowe urz\u0105dzenie do rozm\u00f3w. Zaopatrz si\u0119 w par\u0119 zestaw\u00f3w s\u0142uchawkowych i jednego rozm\u00f3wc\u0119.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496666\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TShark \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0437\u0430\u0445\u0432\u0430\u0442 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a. \u041d\u0443 \u0430 \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0443\u0436\u0435 \u0441 \u043f\u043e\u0434\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0441 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u043d\u0430\u0434\u043f\u0438\u0441\u044f\u043c\u0438: \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87044,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-02T17:42:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-02T17:42:04+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Odkrywamy silnik VoIP Mediastreamer2. Cz\u0119\u015b\u0107 8 | ProHoster","description":"Materia\u0142 artyku\u0142u pochodzi z mojego kana\u0142u Dzen.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster","og:description":"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-02T17:42:04+00:00","article:modified_time":"2020-07-02T17:42:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87043","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:59:56","updated":"2022-10-07 20:48:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=87043"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/87044"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=87043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=87043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=87043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}