{"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\/ro\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","title":{"rendered":"Studying the VoIP engine Mediastreamer2. Part 8","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Materialul articolului provine de pe canalul meu <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">zen<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Studying the VoIP engine Mediastreamer2. Part 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\">Structura pachetului RTP<\/h2>\n<p><\/p>\n<p>\u00cen trecut, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496490\/\">pe care l-a\u021bi citit<\/a><\/noindex> am realizat capturarea <em>TShark<\/em> a pachetelor RTP care au fost schimbate \u00eentre receptorul \u0219i transmit\u0103torul nostru. \u00cen acest articol, vom coloriza elementele pachetului \u00een culori diferite \u0219i vom discuta despre func\u021bia lor. <\/p>\n<p><\/p>\n<p>S\u0103 ne uit\u0103m la acela\u0219i pachet, dar deja cu c\u00e2mpurile colorizate \u0219i cu etichete explicative:<br \/>\n<img decoding=\"async\" alt=\"Studying the VoIP engine Mediastreamer2. Part 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>\u00cen partea de jos a listei sunt colorizate byte-urile care compun pachetul RTP, care reprezint\u0103 la r\u00e2ndul s\u0103u \u00eenc\u0103rc\u0103tura util\u0103 a pachetului UDP (capul s\u0103u este eviden\u021biat cu o linie neagr\u0103). Fondurile colorate indic\u0103 byte-urile capului RTP, iar blocul de date este eviden\u021biat \u00een verde, con\u021bin\u00e2nd \u00eenc\u0103rc\u0103tura util\u0103 a pachetului RTP. Datele sunt prezentate \u00een format hexadecimal. \u00cen cazul nostru, este un semnal audio comprimat prin legea u (legea mu), adic\u0103 un e\u0219antion are dimensiunea de 1 byte. Deoarece am folosit rata de e\u0219antionare setat\u0103 implicit (8000 Hz), la o frecven\u021b\u0103 de pachete de 50 Hz, fiecare pachet RTP ar trebui s\u0103 con\u021bin\u0103 160 byte de \u00eenc\u0103rc\u0103tur\u0103 util\u0103. Asta vom observa, num\u0103r\u00e2nd byte-urile din zona verde, care ar trebui s\u0103 fie 10 r\u00e2nduri. <\/p>\n<p><\/p>\n<p>Conform standardului, cantitatea de date din \u00eenc\u0103rc\u0103tura util\u0103 trebuie s\u0103 fie un multiplu de patru sau, cu alte cuvinte, s\u0103 con\u021bin\u0103 un num\u0103r \u00eentreg de cuvinte de patru byte. Dac\u0103 \u00eenc\u0103rc\u0103tura util\u0103 nu respect\u0103 aceast\u0103 regul\u0103, trebuie s\u0103 ad\u0103uga\u021bi byte-uri cu valori zero la sf\u00e2r\u0219itul \u00eenc\u0103rc\u0103turii utile \u0219i s\u0103 activa\u021bi bitul Padding (Completare). Acest bit se afl\u0103 \u00een primul byte al capului RTP, colorizat \u00een turcoaz. Observa\u021bi c\u0103 toate byte-urile din \u00eenc\u0103rc\u0103tura util\u0103 au valoarea 0xFF \u2014 a\u0219a arat\u0103 t\u0103cerea \u00een formatul u-law.<\/p>\n<p><\/p>\n<p>Capul pachetului RTP const\u0103 din 12 byte obligatorii, dar \u00een dou\u0103 cazuri poate fi mai lung:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>C\u00e2nd pachetul transport\u0103 un semnal audio ob\u021binut prin mixarea semnalelor de la mai multe surse (fluxuri RTP), dup\u0103 primele 12 byte ale capului se afl\u0103 o tabel\u0103 cu lista identificatorilor surselor, ale c\u0103ror \u00eenc\u0103rc\u0103turi utile au fost utilizate pentru a crea \u00eenc\u0103rc\u0103tura util\u0103 a acestui pachet. \u00cen acest caz, \u00een cei patru bi\u021bi inferiori ai primului byte al capului (c\u00e2mpul <em>Num\u0103rul surselor contributoare<\/em>) se specific\u0103 num\u0103rul de surse. Dimensiunea c\u00e2mpului este de 4 bi\u021bi, prin urmare tabela poate con\u021bine p\u00e2n\u0103 la 15 identificatori de surse. Fiecare dintre ace\u0219tia ocup\u0103 4 octe\u021bi. Aceast\u0103 tabel\u0103 este utilizat\u0103 pentru organizarea conferin\u021belor audio.<\/p>\n<p>\n<\/li>\n<li>\n<p>C\u00e2nd antetul are o extensie. \u00cen acest caz, \u00een primul octet al antetului se seteaz\u0103 bitul <strong>X<\/strong>. \u00cen antetul extins, dup\u0103 tabela participan\u021bilor (dac\u0103 exist\u0103), se afl\u0103 antetul de extensie cu dimensiunea unei cuvinte, urmat de cuvintele extensiei. Extensia este un set de octe\u021bi pe care \u00eei pute\u021bi folosi pentru a transmite date suplimentare. Standardul nu specific\u0103 formatul acestor date \u2014 acesta poate fi orice. De exemplu, acestea pot fi set\u0103ri suplimentare pentru dispozitivul care prime\u0219te pachetele RTP. Pentru unele aplica\u021bii, totu\u0219i, au fost dezvoltate standarde pentru antetul extins. Acest lucru a fost realizat, de exemplu, pentru sistemele de comunica\u021bie conform standardului <em>ED-137 (Standardele de interoperabilitate pentru componente VoIP ATM)<\/em>. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Acum s\u0103 analiz\u0103m c\u00e2mpurile antetului mai \u00een detaliu. Mai jos este o imagine canonic\u0103 cu structura antetului RTP, pe care am colorat-o \u0219i eu \u00een acelea\u0219i culori.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Studying the VoIP engine Mediastreamer2. Part 8\" src=\"\/wp-content\/uploads\/2020\/07\/b8839a56fbe4ee484c9d6b19714b541e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>VER<\/strong> \u2014 num\u0103rul versiunii protocolului (versiunea curent\u0103 2);<\/p>\n<p><\/p>\n<p><strong>P<\/strong> \u2014 un semn care este setat \u00een cazurile c\u00e2nd pachetul RTP este completat cu bi\u021bi goi la sf\u00e2r\u0219it;<\/p>\n<p><\/p>\n<p><strong>X<\/strong> \u2014 un semn c\u0103 antetul este extins;<\/p>\n<p><\/p>\n<p><strong>CC<\/strong> \u2014 con\u021bine num\u0103rul de identificatori CSRC care urmeaz\u0103 dup\u0103 antetul constant (dup\u0103 cuvintele 1..3), \u00een figur\u0103 tabela nu este ar\u0103tat\u0103;<\/p>\n<p><\/p>\n<p><strong>M<\/strong> \u2014 marcajul pentru \u00eenceputul cadrelor sau al prezen\u021bei vocii \u00een canal (dac\u0103 se folose\u0219te un detector de pauze \u00een vorbire). Dac\u0103 receptorul nu con\u021bine detector de pauze \u00een vorbire, atunci acest bit trebuie s\u0103 fie setat constant;<\/p>\n<p><\/p>\n<p><strong>PTYPE<\/strong> \u2014 indic\u0103 formatul \u00eenc\u0103rc\u0103turii utile;<\/p>\n<p><\/p>\n<p><strong>Num\u0103rul de secven\u021b\u0103<\/strong> \u2014 num\u0103rul pachetului, utilizat pentru a restabili ordinea de redare a pachetelor, deoarece situa\u021bia real\u0103 este c\u0103 pachetele pot ajunge la receptor nu \u00een ordinea \u00een care au fost trimise. Valoarea ini\u021bial\u0103 ar trebui s\u0103 fie aleatorie, acest lucru se face pentru ca, \u00een cazul \u00een care se aplic\u0103 criptarea fluxului RTP, s\u0103 se \u00eengreuneze decriptarea acestuia. De asemenea, acest c\u00e2mp permite detectarea pachetelor lips\u0103;<\/p>\n<p><\/p>\n<p><strong>Timestamp<\/strong> \u2014 marcaj\u0103 de timp. Timpul este m\u0103surat \u00een e\u0219antioane de semnal, adic\u0103, dac\u0103 un pachet con\u021bine 160 de e\u0219antioane, atunci marcajul de timp al urm\u0103torului pachet va fi cu 160 mai mare. Valoarea ini\u021bial\u0103 a marcajului de timp trebuie s\u0103 fie aleatorie;<\/p>\n<p><\/p>\n<p><strong>SSRC<\/strong> \u2014 identificatorul sursei pachetului, care trebuie s\u0103 fie unic. Este mai bine s\u0103-l genera\u021bi aleatoriu \u00eenainte de a lansa fluxul RTP.<\/p>\n<p><\/p>\n<p>Dac\u0103 ve\u021bi dezvolta propriul dumneavoastr\u0103 transmisor sau receptor de pachete RTP, va trebui s\u0103 analiza\u021bi adesea pachetele pentru a \u00eembun\u0103t\u0103\u021bi performan\u021ba. V\u0103 recomand s\u0103 \u00eenv\u0103\u021ba\u021bi utilizarea filtr\u0103rii pachetelor \u00een TShark; aceasta v\u0103 permite s\u0103 captura\u021bi doar acele pachete care sunt relevante pentru dumneavoastr\u0103. \u00cen condi\u021biile \u00een care \u00een re\u021bea func\u021bioneaz\u0103 zeci de dispozitive RTP, acest lucru este extrem de valoros. \u00cen linia de comand\u0103 TShark, parametrii de filtrare se specific\u0103 prin op\u021biunea \"-f\". Am folosit aceast\u0103 op\u021biune c\u00e2nd am vrut s\u0103 captur\u0103m pachete de pe portul 8010:<br \/>\n<code>-f \"udp port 8010\"<\/code><br \/>\nParametrii de filtrare sunt, prin natura lor, un set de criterii pe care trebuie s\u0103 le \u00eendeplineasc\u0103 un pachet \"capturat\". Condi\u021bia poate verifica adresa, portul, valoarea unui anumit octet din pachet. Condi\u021biile pot fi combinate prin opera\u021bii logice \"\u0218I\", \"sau\" etc. Este un instrument foarte puternic.<\/p>\n<p><\/p>\n<p>Dac\u0103 dori\u021bi s\u0103 vizualiza\u021bi dinamica modific\u0103rii c\u00e2mpurilor din pachete, va trebui s\u0103 dubla\u021bi ie\u0219irea <em>TShark<\/em> \u00eentr-un fi\u0219ier, a\u0219a cum a fost demonstrat \u00een articolul precedent, prin transmiterea ie\u0219irii <em>TShark<\/em> la intrare <em>tee<\/em>. Apoi, deschiz\u00e2nd fi\u0219ierul de log cu ajutorul <em>less, vim<\/em> sau alt instrument capabil s\u0103 lucreze rapid cu fi\u0219iere text uria\u0219e \u0219i s\u0103 efectueze c\u0103ut\u0103ri, ve\u021bi putea s\u0103 determina\u021bi toate nuan\u021bele comportamentului c\u00e2mpurilor pachetelor \u00een fluxul RTP.<\/p>\n<p><\/p>\n<p>Dac\u0103 ave\u021bi nevoie s\u0103 asculta\u021bi semnalul transmis de fluxul RTP, trebuie s\u0103 folosi\u021bi versiunea <em>TShark<\/em> cu interfa\u021b\u0103 vizual\u0103 <em>Wireshark<\/em>. Prin manipul\u0103ri simple cu mouse-ul, acolo pute\u021bi asculta \u0219i vizualiza oscilograma semnalului. Dar cu o condi\u021bie \u2014 dac\u0103 este codificat \u00een format u-law sau a-low.<\/p>\n<p><\/p>\n<p>\u00cen urm\u0103toarea <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496874\/\">pe care l-a\u021bi citit<\/a><\/noindex> vom construi un dispozitiv de comunicare duplex. Preg\u0103ti\u021bi c\u00e2teva c\u0103\u0219ti \u0219i un partener de conversa\u021bie.<\/p>\n<p>Sursa: <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.2 - 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\/ro\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47\u00cenv\u0103\u021b\u0103m motorul VoIP Mediastreamer2. Partea 8 | ProHoster","description":"Materialul articolului este preluat de pe canalul meu de Zen.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/87043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=87043"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/87043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/87044"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=87043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=87043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=87043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}