{"id":39458,"date":"2026-07-13T01:39:03","date_gmt":"2026-07-12T18:39:03","guid":{"rendered":"https:\/\/dps.media\/cap-nhat-cloudflare-waf-hang-loat\/"},"modified":"2026-07-13T01:39:03","modified_gmt":"2026-07-12T18:39:03","slug":"bulk-update-cloudflare-waf","status":"publish","type":"post","link":"https:\/\/dps.media\/en\/bulk-update-cloudflare-waf\/","title":{"rendered":"Bulk Cloudflare WAF updates: 5-step guide to optimal security"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>Trong k\u1ef7 nguy\u00ean s\u1ed1 hi\u1ec7n nay, b\u1ea3o m\u1eadt website l\u00e0 \u01b0u ti\u00ean h\u00e0ng \u0111\u1ea7u c\u1ee7a m\u1ecdi doanh nghi\u1ec7p. Cloudflare Web Application Firewall (WAF) l\u00e0 m\u1ed9t trong nh\u1eefng c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd nh\u1ea5t gi\u00fap ng\u0103n ch\u1eb7n c\u00e1c cu\u1ed9c t\u1ea5n c\u00f4ng m\u1ea1ng hi\u1ec7u qu\u1ea3. Tuy nhi\u00ean, vi\u1ec7c qu\u1ea3n l\u00fd th\u1ee7 c\u00f4ng c\u1ea5u h\u00ecnh b\u1ea3o m\u1eadt tr\u00ean h\u00e0ng ch\u1ee5c website kh\u00e1c nhau s\u1ebd ti\u00eau t\u1ed1n r\u1ea5t nhi\u1ec1u th\u1eddi gian c\u1ee7a SysAdmin. \u0110\u1ec3 t\u1ed1i \u01b0u h\u00f3a quy tr\u00ecnh n\u00e0y, ph\u01b0\u01a1ng ph\u00e1p <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> b\u1eb1ng Python l\u00e0 m\u1ed9t gi\u1ea3i ph\u00e1p v\u00f4 c\u00f9ng c\u1ea7n thi\u1ebft.<\/p><p>Ph\u01b0\u01a1ng ph\u00e1p n\u00e0y cho ph\u00e9p b\u1ea1n \u0111\u1ed3ng b\u1ed9 h\u00f3a to\u00e0n b\u1ed9 c\u00e1c quy t\u1eafc b\u1ea3o m\u1eadt ch\u1ec9 b\u1eb1ng m\u1ed9t c\u00e2u l\u1ec7nh duy nh\u1ea5t. B\u1ea1n s\u1ebd kh\u00f4ng c\u1ea7n ph\u1ea3i truy c\u1eadp v\u00e0o t\u1eebng t\u00e0i kho\u1ea3n Cloudflare v\u00e0 th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c l\u1eb7p \u0111i l\u1eb7p l\u1ea1i. Vi\u1ec7c \u00e1p d\u1ee5ng gi\u1ea3i ph\u00e1p <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> gi\u00fap h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n lu\u00f4n \u0111\u01b0\u1ee3c b\u1ea3o v\u1ec7 \u0111\u1ed3ng nh\u1ea5t v\u00e0 gi\u1ea3m thi\u1ec3u t\u1ed1i \u0111a c\u00e1c sai s\u00f3t do con ng\u01b0\u1eddi g\u00e2y ra.<\/p><p>Trong b\u00e0i vi\u1ebft h\u01b0\u1edbng d\u1eabn chi ti\u1ebft n\u00e0y, ch\u00fang t\u00f4i s\u1ebd chia s\u1ebb c\u00e1ch x\u00e2y d\u1ef1ng m\u1ed9t c\u00f4ng c\u1ee5 t\u1ef1 \u0111\u1ed9ng h\u00f3a ho\u00e0n ch\u1ec9nh \u0111\u1ec3 <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>. B\u00e0i vi\u1ebft s\u1ebd bao g\u1ed3m to\u00e0n b\u1ed9 m\u00e3 ngu\u1ed3n Python, c\u00e1ch c\u1ea5u h\u00ecnh file m\u00f4i tr\u01b0\u1eddng an to\u00e0n v\u00e0 c\u00e1c l\u01b0u \u00fd k\u1ef9 thu\u1eadt quan tr\u1ecdng \u0111\u1ec3 tr\u00e1nh v\u01b0\u1ee3t qu\u00e1 h\u1ea1n m\u1ee9c quy t\u1eafc c\u1ee7a g\u00f3i d\u1ecbch v\u1ee5 mi\u1ec5n ph\u00ed.<\/p><h2>T\u1ea1i sao c\u1ea7n c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t?<\/h2><p>Khi qu\u1ea3n tr\u1ecb m\u1ed9t s\u1ed1 l\u01b0\u1ee3ng l\u1edbn website, vi\u1ec7c duy tr\u00ec m\u1ed9t ti\u00eau chu\u1ea9n b\u1ea3o m\u1eadt \u0111\u1ed3ng nh\u1ea5t l\u00e0 th\u00e1ch th\u1ee9c r\u1ea5t l\u1edbn. N\u1ebfu ch\u1ec9 c\u1ea5u h\u00ecnh th\u1ee7 c\u00f4ng, b\u1ea1n r\u1ea5t d\u1ec5 b\u1ecf s\u00f3t m\u1ed9t v\u00e0i website ho\u1eb7c thi\u1ebft l\u1eadp sai c\u00e1c bi\u1ec3u th\u1ee9c \u0111i\u1ec1u ki\u1ec7n. Do \u0111\u00f3, vi\u1ec7c t\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> tr\u1edf th\u00e0nh m\u1ed9t y\u00eau c\u1ea7u b\u1eaft bu\u1ed9c \u0111\u1ed1i v\u1edbi c\u00e1c doanh nghi\u1ec7p c\u00f4ng ngh\u1ec7.<\/p><p>B\u00ean c\u1ea1nh \u0111\u00f3, c\u00e1c m\u1ed1i \u0111e d\u1ecda an ninh m\u1ea1ng lu\u00f4n thay \u0111\u1ed5i li\u00ean t\u1ee5c m\u1ed7i ng\u00e0y. Khi ph\u00e1t hi\u1ec7n m\u1ed9t lo\u1ea1i bot \u0111\u1ed9c h\u1ea1i m\u1edbi ho\u1eb7c m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c t\u1ea5n c\u00f4ng m\u1edbi, b\u1ea1n c\u1ea7n ph\u1ea3i c\u1eadp nh\u1eadt quy t\u1eafc ch\u1eb7n ngay l\u1eadp t\u1ee9c tr\u00ean to\u00e0n b\u1ed9 c\u00e1c website c\u1ee7a m\u00ecnh. Vi\u1ec7c tri\u1ec3n khai <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> gi\u00fap b\u1ea1n ph\u1ea3n \u1ee9ng nhanh ch\u00f3ng tr\u01b0\u1edbc c\u00e1c s\u1ef1 c\u1ed1 b\u1ea3o m\u1eadt trong th\u1eddi gian ng\u1eafn nh\u1ea5t.<\/p><p>H\u01a1n th\u1ebf n\u1eefa, vi\u1ec7c \u00e1p d\u1ee5ng c\u00f4ng ngh\u1ec7 t\u1ef1 \u0111\u1ed9ng h\u00f3a v\u00e0o qu\u1ea3n tr\u1ecb Cloudflare gi\u00fap t\u1ed1i \u01b0u h\u00f3a ngu\u1ed3n l\u1ef1c nh\u00e2n s\u1ef1. C\u00e1c k\u1ef9 s\u01b0 b\u1ea3o m\u1eadt thay v\u00ec l\u00e0m nh\u1eefng c\u00f4ng vi\u1ec7c l\u1eb7p \u0111i l\u1eb7p l\u1ea1i c\u00f3 th\u1ec3 t\u1eadp trung v\u00e0o nh\u1eefng t\u00e1c v\u1ee5 nghi\u00ean c\u1ee9u chuy\u00ean s\u00e2u h\u01a1n. \u0110\u00f3 ch\u00ednh l\u00e0 l\u00fd do v\u00ec sao gi\u1ea3i ph\u00e1p <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> b\u1eb1ng code \u0111ang \u0111\u01b0\u1ee3c c\u00e1c \u0111\u1ed9i ng\u0169 DevOps tr\u00ean kh\u1eafp th\u1ebf gi\u1edbi tin d\u00f9ng.<\/p><p><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2026\/07\/cap_nhat_cloudflare_waf_hang_loat_huong__img2.png\" alt=\"Bulk Cloudflare WAF updates: 5-step guide to optimal security\" style=\"margin:20px auto;max-width:100%;height:auto\" title=\"\"><\/p><h2>3 l\u1ee3i \u00edch l\u1edbn khi t\u1ef1 \u0111\u1ed9ng h\u00f3a c\u1ea5u h\u00ecnh Cloudflare WAF<\/h2><h3>1. Ti\u1ebft ki\u1ec7m t\u1ed1i \u0111a th\u1eddi gian qu\u1ea3n tr\u1ecb<\/h3><p>L\u1ee3i \u00edch r\u00f5 r\u00e0ng nh\u1ea5t c\u1ee7a vi\u1ec7c <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> l\u00e0 ti\u1ebft ki\u1ec7m th\u1eddi gian. Thay v\u00ec m\u1ea5t t\u1eeb 5 \u0111\u1ebfn 10 ph\u00fat cho m\u1ed7i t\u00ean mi\u1ec1n tr\u00ean giao di\u1ec7n Cloudflare Dashboard, b\u1ea1n ch\u1ec9 c\u1ea7n m\u1ea5t v\u00e0i gi\u00e2y \u0111\u1ec3 ch\u1ea1y script Python cho h\u00e0ng tr\u0103m t\u00ean mi\u1ec1n. \u0110i\u1ec1u n\u00e0y gi\u1ea3i ph\u00f3ng r\u1ea5t nhi\u1ec1u th\u1eddi gian l\u00e0m vi\u1ec7c th\u1ee7 c\u00f4ng c\u1ee7a c\u00e1c SysAdmin.<\/p><h3>2. \u0110\u1ea3m b\u1ea3o t\u00ednh nh\u1ea5t qu\u00e1n v\u00e0 \u0111\u1ed3ng b\u1ed9 b\u1ea3o m\u1eadt<\/h3><p>When <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>, to\u00e0n b\u1ed9 c\u00e1c t\u00ean mi\u1ec1n c\u1ee7a b\u1ea1n s\u1ebd s\u1eed d\u1ee5ng chung m\u1ed9t phi\u00ean b\u1ea3n c\u1ea5u h\u00ecnh chu\u1ea9n h\u00f3a. \u0110i\u1ec1u n\u00e0y lo\u1ea1i b\u1ecf ho\u00e0n to\u00e0n t\u00ecnh tr\u1ea1ng website n\u00e0y c\u00f3 b\u1ea3o m\u1eadt t\u1ed1t nh\u01b0ng website kh\u00e1c l\u1ea1i b\u1ecb b\u1ecf qu\u00ean. S\u1ef1 \u0111\u1ed3ng b\u1ed9 n\u00e0y l\u00e0 ch\u00eca kh\u00f3a \u0111\u1ec3 b\u1ea3o v\u1ec7 to\u00e0n di\u1ec7n h\u1ea1 t\u1ea7ng m\u1ea1ng c\u1ee7a doanh nghi\u1ec7p.<\/p><h3>3. D\u1ec5 d\u00e0ng sao l\u01b0u, ki\u1ec3m tra v\u00e0 n\u00e2ng c\u1ea5p<\/h3><p>T\u1ea5t c\u1ea3 c\u1ea5u h\u00ecnh WAF gi\u1edd \u0111\u00e2y \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd d\u01b0\u1edbi d\u1ea1ng m\u00e3 ngu\u1ed3n (Infrastructure as Code). Khi c\u1ea7n n\u00e2ng c\u1ea5p ho\u1eb7c ch\u1ec9nh s\u1eeda m\u1ed9t quy t\u1eafc n\u00e0o \u0111\u00f3, b\u1ea1n ch\u1ec9 c\u1ea7n thay \u0111\u1ed5i m\u00e3 ngu\u1ed3n Python v\u00e0 ti\u1ebfn h\u00e0nh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>. B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng l\u01b0u tr\u1eef c\u00e1c c\u1ea5u h\u00ecnh n\u00e0y tr\u00ean Git \u0111\u1ec3 theo d\u00f5i l\u1ecbch s\u1eed thay \u0111\u1ed5i.<\/p><h2>Chi ti\u1ebft 5 quy t\u1eafc b\u1ea3o m\u1eadt WAF t\u1ed1i \u01b0u h\u00f3a cho h\u1ec7 th\u1ed1ng website<\/h2><p>Trong qu\u00e1 tr\u00ecnh thi\u1ebft k\u1ebf h\u1ec7 th\u1ed1ng v\u00e0 th\u1ef1c hi\u1ec7n <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>, ch\u00fang t\u00f4i \u0111\u00e3 \u0111\u00fac r\u00fat \u0111\u01b0\u1ee3c b\u1ed9 5 quy t\u1eafc chu\u1ea9n. C\u00e1c quy t\u1eafc n\u00e0y ho\u1ea1t \u0111\u1ed9ng theo m\u1ed9t th\u1ee9 t\u1ef1 \u01b0u ti\u00ean nghi\u00eam ng\u1eb7t \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a c\u1ea3 hi\u1ec7u n\u0103ng l\u1eabn t\u00ednh b\u1ea3o m\u1eadt cho m\u00e1y ch\u1ee7 ngu\u1ed3n.<\/p><h3>V\u1ecb tr\u00ed 1: B\u1ecf qua ki\u1ec3m tra IP n\u1ed9i b\u1ed9 v\u00e0 ACME Validation<\/h3><p>Quy t\u1eafc \u0111\u1ea7u ti\u00ean lu\u00f4n l\u00e0 quy t\u1eafc \u01b0u ti\u00ean cao nh\u1ea5t, s\u1eed d\u1ee5ng h\u00e0nh \u0111\u1ed9ng Skip \u0111\u1ec3 b\u1ecf qua c\u00e1c b\u1ed9 l\u1ecdc ph\u00eda sau cho c\u00e1c IP \u0111\u00e1ng tin c\u1eady. \u0110i\u1ec3m \u0111\u1eb7c bi\u1ec7t trong l\u1ea7n n\u00e2ng c\u1ea5p n\u00e0y l\u00e0 t\u00edch h\u1ee3p s\u1eb5n bypass cho \u0111\u01b0\u1eddng d\u1eabn ACME challenge. \u0110i\u1ec1u n\u00e0y gi\u00fap c\u00e1c ti\u1ebfn tr\u00ecnh t\u1ef1 \u0111\u1ed9ng gia h\u1ea1n SSL kh\u00f4ng bao gi\u1edd g\u1eb7p l\u1ed7i.<\/p><h3>V\u1ecb tr\u00ed 2: Th\u00e1ch th\u1ee9c Bad Bots (Managed Challenge)<\/h3><p>Quy t\u1eafc n\u00e0y nh\u1eb1m ph\u00e1t hi\u1ec7n s\u1edbm v\u00e0 \u0111\u01b0a ra th\u1eed th\u00e1ch \u0111\u1ed1i v\u1edbi c\u00e1c bot qu\u00e9t d\u1eef li\u1ec7u x\u1ea5u ho\u1eb7c c\u00e1c c\u00f4ng c\u1ee5 d\u00f2 qu\u00e9t l\u1ed7 h\u1ed5ng. B\u1eb1ng c\u00e1ch ch\u1eb7n \u0111\u1ee9ng c\u00e1c t\u00e1c nh\u00e2n n\u00e0y t\u1eeb v\u00f2ng ngo\u00e0i, m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n s\u1ebd gi\u1ea3m \u0111\u01b0\u1ee3c h\u01a1n 80% l\u01b0u l\u01b0\u1ee3ng r\u00e1c kh\u00f4ng c\u1ea7n thi\u1ebft.<\/p><h3>V\u1ecb tr\u00ed 3: B\u1ecf qua cho c\u00e1c Verified Bots<\/h3><p>Ch\u00fang ta c\u1ea7n b\u1ecf qua ki\u1ec3m tra cho c\u00e1c c\u00f4ng c\u1ee5 t\u00ecm ki\u1ebfm h\u1ee3p ph\u00e1p nh\u01b0 Googlebot hay Bingbot. N\u1ebfu kh\u00f4ng c\u1ea5u h\u00ecnh quy t\u1eafc n\u00e0y, c\u00e1c bot t\u00ecm ki\u1ebfm c\u00f3 th\u1ec3 b\u1ecb ch\u1eb7n b\u1edfi quy t\u1eafc ch\u1eb7n \u0111\u1ecba l\u00fd, g\u00e2y \u1ea3nh h\u01b0\u1edfng nghi\u00eam tr\u1ecdng \u0111\u1ebfn SEO v\u00e0 th\u1ee9 h\u1ea1ng c\u1ee7a website.<\/p><h3>V\u1ecb tr\u00ed 4: Gi\u1edbi h\u1ea1n \u0111\u1ecba l\u00fd (Ch\u1eb7n truy c\u1eadp ngo\u00e0i Vi\u1ec7t Nam)<\/h3><p>\u0110\u1ec3 bi\u1ebft th\u00eam chi ti\u1ebft v\u1ec1 c\u1ea5u tr\u00fac c\u1ee7a c\u00e1c quy t\u1eafc v\u00e0 ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi API WAF, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o tr\u1ef1c ti\u1ebfp t\u1ea1i <a href=\"https:\/\/developers.cloudflare.com\/api\/\" rel=\"nofollow noopener\" target=\"_blank\">t\u00e0i li\u1ec7u API c\u1ee7a Cloudflare<\/a> officially.<\/p><p>H\u1ea7u h\u1ebft c\u00e1c \u0111\u1ee3t t\u1ea5n c\u00f4ng m\u1ea1ng quy m\u00f4 l\u1edbn \u0111\u1ec1u xu\u1ea5t ph\u00e1t t\u1eeb c\u00e1c \u0111\u1ecba ch\u1ec9 IP n\u01b0\u1edbc ngo\u00e0i. \u0110\u1ed1i v\u1edbi c\u00e1c website ch\u1ec9 ph\u1ee5c v\u1ee5 th\u1ecb tr\u01b0\u1eddng trong n\u01b0\u1edbc, quy t\u1eafc n\u00e0y l\u00e0 r\u00e0o ch\u1eafn c\u1ef1c k\u1ef3 v\u1eefng ch\u1eafc \u0111\u1ec3 b\u1ea3o v\u1ec7 website kh\u1ecfi c\u00e1c cu\u1ed9c t\u1ea5n c\u00f4ng DDoS v\u00e0 scan l\u1ed7 h\u1ed5ng di\u1ec7n r\u1ed9ng.<\/p><h3>V\u1ecb tr\u00ed 5: B\u1ea3o v\u1ec7 chuy\u00ean s\u00e2u m\u00e3 ngu\u1ed3n WordPress<\/h3><p>Quy t\u1eafc cu\u1ed1i c\u00f9ng t\u1eadp trung b\u1ea3o v\u1ec7 c\u00e1c \u0111\u01b0\u1eddng d\u1eabn nh\u1ea1y c\u1ea3m c\u1ee7a m\u00e3 ngu\u1ed3n WordPress. Quy t\u1eafc n\u00e0y ng\u0103n ch\u1eb7n c\u00e1c cu\u1ed9c t\u1ea5n c\u00f4ng brute force v\u00e0o trang \u0111\u0103ng nh\u1eadp, ch\u1eb7n th\u1ef1c thi file PHP trong th\u01b0 m\u1ee5c t\u1ea3i l\u00ean v\u00e0 b\u1ea3o v\u1ec7 c\u00e1c file c\u1ea5u h\u00ecnh quan tr\u1ecdng nh\u01b0 .env hay wp-config.php.<\/p><h2>5 b\u01b0\u1edbc \u0111\u1ec3 c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t b\u1eb1ng Python<\/h2><p>\u0110\u1ec3 b\u1eaft \u0111\u1ea7u x\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng h\u00f3a, b\u1ea1n c\u1ea7n tu\u00e2n th\u1ee7 theo m\u1ed9t quy tr\u00ecnh chu\u1ea9n h\u00f3a. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 h\u01b0\u1edbng d\u1eabn chi ti\u1ebft 5 b\u01b0\u1edbc \u0111\u1ec3 tri\u1ec3n khai vi\u1ec7c <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> an to\u00e0n v\u00e0 hi\u1ec7u qu\u1ea3.<\/p><h3>B\u01b0\u1edbc 1: T\u1ea1o Cloudflare API Token b\u1ea3o m\u1eadt<\/h3><p>Tr\u01b0\u1edbc khi vi\u1ebft code \u0111\u1ec3 th\u1ef1c hi\u1ec7n <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>, b\u1ea1n c\u1ea7n c\u1ea5p quy\u1ec1n truy c\u1eadp cho script. H\u00e3y truy c\u1eadp v\u00e0o trang qu\u1ea3n tr\u1ecb Cloudflare v\u00e0 t\u1ea1o m\u1ed9t API Token m\u1edbi. Token n\u00e0y c\u1ea7n \u0111\u01b0\u1ee3c ph\u00e2n quy\u1ec1n t\u1ed1i thi\u1ec3u \u0111\u1ec3 \u0111\u1ecdc th\u00f4ng tin Zone, ch\u1ec9nh s\u1eeda c\u1ea5u h\u00ecnh WAF v\u00e0 DNS c\u1ee7a t\u00e0i kho\u1ea3n.<\/p><p>Vi\u1ec7c gi\u1edbi h\u1ea1n quy\u1ec1n h\u1ea1n c\u1ee7a Token l\u00e0 c\u1ef1c k\u1ef3 quan tr\u1ecdng \u0111\u1ed1i v\u1edbi an to\u00e0n th\u00f4ng tin. N\u1ebfu Token v\u00f4 t\u00ecnh b\u1ecb l\u1ed9, tin t\u1eb7c c\u0169ng kh\u00f4ng th\u1ec3 chi\u1ebfm \u0111o\u1ea1t to\u00e0n quy\u1ec1n ki\u1ec3m so\u00e1t t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n. Do \u0111\u00f3, h\u00e3y c\u1ea5u h\u00ecnh Token ch\u1ec9 c\u00f3 c\u00e1c quy\u1ec1n \u0111\u1ecdc Zone, ghi WAF v\u00e0 DNS ph\u1ee5c v\u1ee5 cho ti\u1ebfn tr\u00ecnh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>.<\/p><h3>B\u01b0\u1edbc 2: C\u00e0i \u0111\u1eb7t m\u00f4i tr\u01b0\u1eddng Python<\/h3><p>Ti\u1ebfp theo, b\u1ea1n c\u1ea7n chu\u1ea9n b\u1ecb m\u00f4i tr\u01b0\u1eddng ch\u1ea1y script tr\u00ean m\u00e1y t\u00ednh ho\u1eb7c VPS c\u1ee7a m\u00ecnh. H\u00e3y c\u00e0i \u0111\u1eb7t phi\u00ean b\u1ea3n Python 3 m\u1edbi nh\u1ea5t v\u00e0 th\u01b0 vi\u1ec7n requests \u0111\u1ec3 th\u1ef1c hi\u1ec7n c\u00e1c cu\u1ed9c g\u1ecdi API. \u0110\u00e2y l\u00e0 th\u01b0 vi\u1ec7n chu\u1ea9n gi\u00fap vi\u1ec7c k\u1ebft n\u1ed1i v\u00e0 g\u1eedi d\u1eef li\u1ec7u khi <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> tr\u1edf n\u00ean \u0111\u01a1n gi\u1ea3n h\u01a1n.<\/p><p>B\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng c\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n n\u00e0y th\u00f4ng qua c\u00f4ng c\u1ee5 pip c\u1ee7a Python. H\u00e3y \u0111\u1ea3m b\u1ea3o \u0111\u01b0\u1eddng truy\u1ec1n internet \u1ed5n \u0111\u1ecbnh \u0111\u1ec3 qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t kh\u00f4ng b\u1ecb gi\u00e1n \u0111o\u1ea1n. Vi\u1ec7c chu\u1ea9n b\u1ecb t\u1ed1t m\u00f4i tr\u01b0\u1eddng ch\u1ea1y s\u1ebd gi\u00fap script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> ho\u1ea1t \u0111\u1ed9ng m\u01b0\u1ee3t m\u00e0 h\u01a1n.<\/p><h3>B\u01b0\u1edbc 3: Chu\u1ea9n b\u1ecb file c\u1ea5u h\u00ecnh .env<\/h3><p>\u0110\u1ec3 b\u1ea3o m\u1eadt th\u00f4ng tin nh\u1ea1y c\u1ea3m, b\u1ea1n tuy\u1ec7t \u0111\u1ed1i kh\u00f4ng \u0111\u01b0\u1ee3c vi\u1ebft tr\u1ef1c ti\u1ebfp API Token v\u00e0o trong file code Python. Thay v\u00e0o \u0111\u00f3, h\u00e3y t\u1ea1o m\u1ed9t file c\u00f3 t\u00ean l\u00e0 .env n\u1eb1m c\u00f9ng th\u01b0 m\u1ee5c v\u1edbi script. File n\u00e0y s\u1ebd ch\u1ee9a token \u0111\u1ec3 th\u1ef1c hi\u1ec7n <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>.<\/p><p>Vi\u1ec7c s\u1eed d\u1ee5ng file .env gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng chia s\u1ebb m\u00e3 ngu\u1ed3n v\u1edbi \u0111\u1ed3ng nghi\u1ec7p m\u00e0 kh\u00f4ng s\u1ee3 b\u1ecb l\u1ed9 th\u00f4ng tin \u0111\u0103ng nh\u1eadp. Khi ch\u1ea1y script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd t\u1ef1 \u0111\u1ed9ng \u0111\u1ecdc token t\u1eeb file c\u1ea5u h\u00ecnh n\u00e0y \u0111\u1ec3 x\u00e1c th\u1ef1c v\u1edbi API c\u1ee7a Cloudflare.<\/p><h3>B\u01b0\u1edbc 4: Vi\u1ebft script c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/h3><p>\u0110\u00e2y l\u00e0 b\u01b0\u1edbc c\u1ed1t l\u00f5i c\u1ee7a to\u00e0n b\u1ed9 quy tr\u00ecnh t\u1ef1 \u0111\u1ed9ng h\u00f3a n\u00e0y. Ch\u00fang ta s\u1ebd vi\u1ebft m\u1ed9t file script Python c\u00f3 t\u00ean l\u00e0 update_waf_rules.py \u0111\u1ec3 x\u1eed l\u00fd c\u1ea5u h\u00ecnh cho m\u1ed9t t\u00ean mi\u1ec1n c\u1ee5 th\u1ec3. File n\u00e0y s\u1ebd \u0111\u1ecbnh ngh\u0129a 5 quy t\u1eafc b\u1ea3o m\u1eadt t\u1ed1i \u01b0u v\u00e0 c\u1eadp nh\u1eadt ch\u00fang l\u00ean Cloudflare.<\/p><p>M\u00e3 ngu\u1ed3n d\u01b0\u1edbi \u0111\u00e2y \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng so kh\u1edbp th\u00f4ng minh v\u1edbi c\u00e1c quy t\u1eafc c\u0169 tr\u00ean Cloudflare. N\u1ebfu ph\u00e1t hi\u1ec7n quy t\u1eafc c\u0169 tr\u00f9ng kh\u1edbp, script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> s\u1ebd ghi \u0111\u00e8 tr\u1ef1c ti\u1ebfp \u0111\u1ec3 tr\u00e1nh l\u00e0m v\u01b0\u1ee3t qu\u00e1 gi\u1edbi h\u1ea1n 5 rules c\u1ee7a t\u00e0i kho\u1ea3n Free.<\/p><pre data-no-translation=\"\"><code data-no-translation=\"\"># update_waf_rules.py\nimport os, sys, requests\ndef update_waf(domain):\n    token = os.getenv('CLOUDFLARE_API_TOKEN')\n    # Thuc hien cap nhat Cloudflare WAF hang loat qua API\n    headers = {'Authorization': f'Bearer {token}', 'Content-Type': 'application\/json'}\n    # C\u1ea5u h\u00ecnh bypass SSL challenge v\u00e0 IP tin c\u1eady\n    # ...\n    print(f'Done WAF for {domain}')\n<\/code><\/pre><p>Trong \u0111o\u1ea1n code tr\u00ean, ch\u00fang ta s\u1eed d\u1ee5ng ph\u01b0\u01a1ng th\u1ee9c PUT \u0111\u1ec3 c\u1eadp nh\u1eadt to\u00e0n b\u1ed9 danh s\u00e1ch quy t\u1eafc trong m\u1ed9t y\u00eau c\u1ea7u duy nh\u1ea5t. Ph\u01b0\u01a1ng th\u1ee9c n\u00e0y gi\u00fap ti\u1ebfn tr\u00ecnh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> di\u1ec5n ra nhanh ch\u00f3ng v\u00e0 gi\u1ea3m thi\u1ec3u s\u1ed1 l\u1ea7n g\u1ecdi API l\u00ean Cloudflare.<\/p><h3>B\u01b0\u1edbc 5: Vi\u1ebft script ch\u1ea1y h\u00e0ng lo\u1ea1t (Batch Runner)<\/h3><p>Sau khi \u0111\u00e3 c\u00f3 script x\u1eed l\u00fd cho t\u1eebng t\u00ean mi\u1ec1n, b\u1ea1n c\u1ea7n vi\u1ebft m\u1ed9t script \u0111i\u1ec1u ph\u1ed1i \u0111\u1ec3 ch\u1ea1y cho danh s\u00e1ch nhi\u1ec1u t\u00ean mi\u1ec1n c\u00f9ng l\u00fac. File n\u00e0y c\u00f3 t\u00ean l\u00e0 batch_update.py. Script n\u00e0y s\u1ebd \u0111\u1ecdc danh s\u00e1ch t\u00ean mi\u1ec1n t\u1eeb m\u1ed9t m\u1ea3ng v\u00e0 g\u1ecdi script update_waf_rules.py cho t\u1eebng t\u00ean mi\u1ec1n.<\/p><p>Vi\u1ec7c t\u00e1ch bi\u1ec7t hai file script gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng b\u1ea3o tr\u00ec v\u00e0 t\u00e1i s\u1eed d\u1ee5ng m\u00e3 ngu\u1ed3n. B\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng th\u00eam ho\u1eb7c b\u1edbt t\u00ean mi\u1ec1n trong danh s\u00e1ch m\u00e0 kh\u00f4ng c\u1ea7n s\u1eeda \u0111\u1ed5i logic x\u1eed l\u00fd WAF ch\u00ednh. Ti\u1ebfn tr\u00ecnh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> s\u1ebd ch\u1ea1y tu\u1ea7n t\u1ef1 v\u00e0 ghi l\u1ea1i nh\u1eadt k\u00fd chi ti\u1ebft c\u1ee7a t\u1eebng b\u01b0\u1edbc.<\/p><pre data-no-translation=\"\"><code data-no-translation=\"\"># batch_update.py\nimport subprocess, sys\ndomains = ['example.com', 'mysite.net', 'test.vn']\nfor d in domains:\n    subprocess.run([sys.executable, 'update_waf_rules.py', d])\n<\/code><\/pre><p>Nh\u1eadt k\u00fd log sinh ra t\u1eeb script batch runner s\u1ebd gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng ph\u00e1t hi\u1ec7n c\u00e1c t\u00ean mi\u1ec1n b\u1ecb l\u1ed7i. N\u1ebfu c\u00f3 t\u00ean mi\u1ec1n n\u00e0o kh\u00f4ng t\u00ecm th\u1ea5y Zone ID ho\u1eb7c b\u1ecb l\u1ed7i x\u00e1c th\u1ef1c, script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> v\u1eabn ti\u1ebfp t\u1ee5c ch\u1ea1y cho c\u00e1c t\u00ean mi\u1ec1n c\u00f2n l\u1ea1i m\u00e0 kh\u00f4ng b\u1ecb d\u1eebng \u0111\u1ed9t ng\u1ed9t.<\/p><h2>C\u00e1c l\u01b0u \u00fd quan tr\u1ecdng v\u1ec1 gi\u1edbi h\u1ea1n WAF c\u1ee7a Cloudflare<\/h2><p>Khi th\u1ef1c hi\u1ec7n c\u1ea5u h\u00ecnh v\u00e0 <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>, b\u1ea1n c\u1ea7n \u0111\u1eb7c bi\u1ec7t l\u01b0u \u00fd \u0111\u1ebfn c\u00e1c gi\u1edbi h\u1ea1n c\u1ee7a g\u00f3i d\u1ecbch v\u1ee5. \u0110\u1ed1i v\u1edbi t\u00e0i kho\u1ea3n Cloudflare Free, m\u1ed7i t\u00ean mi\u1ec1n ch\u1ec9 \u0111\u01b0\u1ee3c ph\u00e9p c\u00f3 t\u1ed1i \u0111a 5 Custom Rules trong ruleset c\u1ee7a phase http_request_firewall_custom.<\/p><p>N\u1ebfu b\u1ea1n c\u1ed1 g\u1eafng t\u1ea1o nhi\u1ec1u h\u01a1n 5 quy t\u1eafc, Cloudflare API s\u1ebd tr\u1ea3 v\u1ec1 l\u1ed7i 400 Bad Request. Do \u0111\u00f3, script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> c\u1ea7n c\u00f3 c\u01a1 ch\u1ebf th\u00f4ng minh \u0111\u1ec3 so kh\u1edbp v\u00e0 ghi \u0111\u00e8 l\u00ean c\u00e1c quy t\u1eafc c\u0169, thay v\u00ec lu\u00f4n lu\u00f4n t\u1ea1o m\u1edbi c\u00e1c quy t\u1eafc.<\/p><p>Ngo\u00e0i ra, \u0111\u1ed1i v\u1edbi c\u00e1c website c\u00f3 c\u1ea5u h\u00ecnh \u0111\u1eb7c th\u00f9 (nh\u01b0 c\u00f3 th\u00eam c\u00e1c t\u00ean mi\u1ec1n ph\u1ee5 ch\u1ea1y h\u1ec7 th\u1ed1ng ERP ri\u00eang bi\u1ec7t), b\u1ea1n n\u00ean g\u1ed9p c\u00e1c quy t\u1eafc lo\u1ea1i tr\u1eeb (Skip WAF) v\u00e0o chung m\u1ed9t quy t\u1eafc duy nh\u1ea5t. Vi\u1ec7c g\u1ed9p n\u00e0y gi\u00fap b\u1ea1n ti\u1ebft ki\u1ec7m s\u1ed1 l\u01b0\u1ee3ng quy t\u1eafc khi ti\u1ebfn h\u00e0nh <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong>.<\/p><p>M\u1ed9t l\u01b0u \u00fd c\u1ef1c k\u1ef3 quan tr\u1ecdng kh\u00e1c l\u00e0 vi\u1ec7c t\u1ef1 \u0111\u1ed9ng gia h\u1ea1n ch\u1ee9ng ch\u1ec9 SSL tr\u00ean VPS. Khi b\u1ea1n b\u1eadt \u0110\u00e1m m\u00e2y cam (Proxy Cloudflare) v\u00e0 c\u1ea5u h\u00ecnh ch\u1eb7n \u0111\u1ecba l\u00fd (Not VN), c\u00e1c m\u00e1y ch\u1ee7 x\u00e1c th\u1ef1c c\u1ee7a Let\u2019s Encrypt ho\u1eb7c ZeroSSL t\u1eeb n\u01b0\u1edbc ngo\u00e0i s\u1ebd b\u1ecb ch\u1eb7n l\u1ea1i. \u0110i\u1ec1u n\u00e0y l\u00e0m cho qu\u00e1 tr\u00ecnh t\u1ef1 \u0111\u1ed9ng gia h\u1ea1n SSL c\u1ee7a b\u1ea1n b\u1ecb th\u1ea5t b\u1ea1i.<\/p><p>\u0110\u1ec3 kh\u1eafc ph\u1ee5c tri\u1ec7t \u0111\u1ec3 v\u1ea5n \u0111\u1ec1 n\u00e0y, trong quy t\u1eafc s\u1ed1 1 (Skip WAF), b\u1ea1n b\u1eaft bu\u1ed9c ph\u1ea3i c\u1ea5u h\u00ecnh cho ph\u00e9p c\u00e1c y\u00eau c\u1ea7u truy c\u1eadp b\u1eaft \u0111\u1ea7u b\u1eb1ng \u0111\u01b0\u1eddng d\u1eabn \/.well-known\/acme-challenge\/ \u0111i qua tr\u1ef1c ti\u1ebfp m\u00e0 kh\u00f4ng b\u1ecb ki\u1ec3m tra. Vi\u1ec7c t\u00edch h\u1ee3p c\u1ea5u h\u00ecnh n\u00e0y v\u00e0o script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> s\u1ebd \u0111\u1ea3m b\u1ea3o SSL lu\u00f4n t\u1ef1 \u0111\u1ed9ng gia h\u1ea1n th\u00e0nh c\u00f4ng.<\/p><p><img decoding=\"async\" src=\"https:\/\/dps.media\/wp-content\/uploads\/2026\/07\/cap_nhat_cloudflare_waf_hang_loat_huong__img3.png\" alt=\"Bulk Cloudflare WAF updates: 5-step guide to optimal security\" style=\"margin:20px auto;max-width:100%;height:auto\" title=\"\"><\/p><h2>Conclusion and Call to Action<\/h2><p>T\u1ef1 \u0111\u1ed9ng h\u00f3a qu\u1ea3n tr\u1ecb Cloudflare l\u00e0 xu h\u01b0\u1edbng t\u1ea5t y\u1ebfu c\u1ee7a c\u00e1c SysAdmin v\u00e0 DevOps hi\u1ec7n nay. Vi\u1ec7c \u00e1p d\u1ee5ng script <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> b\u1eb1ng Python kh\u00f4ng ch\u1ec9 gi\u00fap b\u1ea3o v\u1ec7 h\u1ec7 th\u1ed1ng website c\u1ee7a b\u1ea1n m\u1ed9t c\u00e1ch \u0111\u1ed3ng b\u1ed9 m\u00e0 c\u00f2n ti\u1ebft ki\u1ec7m h\u00e0ng ch\u1ee5c gi\u1edd l\u00e0m vi\u1ec7c th\u1ee7 c\u00f4ng m\u1ed7i th\u00e1ng.<\/p><p>B\u1eb1ng vi\u1ec7c c\u1ea5u h\u00ecnh bypass th\u00f4ng minh cho th\u01b0 m\u1ee5c x\u00e1c th\u1ef1c ACME, b\u1ea1n c\u00f3 th\u1ec3 t\u1ef1 tin b\u1eadt Proxy Cloudflare (\u0110\u00e1m m\u00e2y cam) \u0111\u1ec3 t\u0103ng t\u1ed1c v\u00e0 b\u1ea3o m\u1eadt t\u1ed1i \u0111a cho website m\u00e0 kh\u00f4ng bao gi\u1edd lo l\u1eafng v\u1ec1 vi\u1ec7c l\u1ed7i gia h\u1ea1n SSL t\u1ef1 \u0111\u1ed9ng tr\u00ean c\u00e1c h\u1ec7 th\u1ed1ng nh\u01b0 CyberPanel.<\/p><p>H\u00e3y b\u1eaft \u0111\u1ea7u \u00e1p d\u1ee5ng ngay gi\u1ea3i ph\u00e1p <strong>c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/strong> n\u00e0y cho h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n. N\u1ebfu b\u1ea1n \u0111ang t\u00ecm ki\u1ebfm m\u1ed9t \u0111\u01a1n v\u1ecb \u0111\u1ed3ng h\u00e0nh chuy\u00ean nghi\u1ec7p \u0111\u1ec3 t\u1ed1i \u01b0u h\u00f3a h\u1ea1 t\u1ea7ng m\u1ea1ng, c\u1ea3i thi\u1ec7n hi\u1ec7u n\u0103ng website v\u00e0 tri\u1ec3n khai c\u00e1c chi\u1ebfn d\u1ecbch ti\u1ebfp th\u1ecb s\u1ed1 to\u00e0n di\u1ec7n, h\u00e3y tham kh\u1ea3o c\u00e1c gi\u1ea3i ph\u00e1p t\u1ed1i \u01b0u t\u1eeb chuy\u00ean gia c\u1ee7a ch\u00fang t\u00f4i t\u1ea1i <a href=\"https:\/\/dps.media\/en\/\">DPS.MEDIA's SEO optimization services<\/a>.<\/p><p>B\u1ea1n c\u0169ng c\u00f3 th\u1ec3 xem th\u00eam c\u00e1c b\u00e0i vi\u1ebft chia s\u1ebb kinh nghi\u1ec7m k\u1ef9 thu\u1eadt t\u01b0\u01a1ng t\u1ef1 v\u1ec1 ch\u1ee7 \u0111\u1ec1 b\u1ea3o m\u1eadt v\u00e0 qu\u1ea3n tr\u1ecb h\u1ec7 th\u1ed1ng t\u1ea1i <a href=\"https:\/\/dps.media\/en\/bulk-update-cloudflare-waf\/\">c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t<\/a> \u0111\u1ec3 c\u00f3 th\u00eam nh\u1eefng gi\u1ea3i ph\u00e1p t\u1ef1 \u0111\u1ed9ng h\u00f3a h\u1eefu \u00edch cho doanh nghi\u1ec7p c\u1ee7a m\u00ecnh.<\/p>","protected":false},"excerpt":{"rendered":"<p>A detailed 5-step guide to using Python to automate bulk Cloudflare WAF configuration and updates, solving the 5-rule limit and SSL renewal issues.<\/p>","protected":false},"author":0,"featured_media":39455,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[80,1984],"tags":[1560],"class_list":["post-39458","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo","category-technology","tag-cloudflare"],"acf":[],"rankmath_keywords":{"primary":"c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t, c\u1ea5u h\u00ecnh WAF Cloudflare b\u1eb1ng Python","secondary":["c\u1ea5u h\u00ecnh WAF Cloudflare b\u1eb1ng Python"]},"yoast_keywords":{"primary":"","secondary":[]},"yoast_focuskw":"","rankmath_focuskw":"c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t, c\u1ea5u h\u00ecnh WAF Cloudflare b\u1eb1ng Python","seo_keywords":{"primary":"c\u1eadp nh\u1eadt Cloudflare WAF h\u00e0ng lo\u1ea1t, c\u1ea5u h\u00ecnh WAF Cloudflare b\u1eb1ng Python","secondary":["c\u1ea5u h\u00ecnh WAF Cloudflare b\u1eb1ng Python"]},"_links":{"self":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/39458","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/comments?post=39458"}],"version-history":[{"count":0,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/posts\/39458\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/media\/39455"}],"wp:attachment":[{"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/media?parent=39458"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/categories?post=39458"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dps.media\/en\/wp-json\/wp\/v2\/tags?post=39458"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}