[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fo59x2piuwpod":3,"$fanuq43nlrv5g":53},{"slug":4,"title":5,"body":6,"summary":7,"tags":8,"author":14,"cover_url":15,"published_at":16,"seo_title":17,"seo_description":18,"reading_minutes":19,"related":20},"who-blocks-ai-crawlers-robots-txt","Who blocks AI crawlers? robots.txt vs the network edge, with numbers","\u003Cp>A thread going around this week claims that only 24 of the 300 most-visited sites block OpenAI's training crawler outright, and that 15 allow OpenAI's search bot while blocking training. I couldn't trace the data behind it, so I ran the scan myself. Here is what the biggest sites actually put in robots.txt, what each line controls (and what it doesn't), and a policy you can paste into a small SaaS site today.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6abd6e16d24dc165a648e0f4\">\u003Cvideo src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd6e18d24dc165a648e0fa-0-1fd688f6.mp4\" autoplay muted loop playsinline preload=\"metadata\">\u003C\u002Fvideo>\u003C\u002Ffigure>\n\n\u003Ch2>The scan\u003C\u002Fh2>\n\u003Cp>Method: the Tranco top-sites list generated on 2026-09-29 (list \u003Ccode>V349N\u003C\u002Fcode>), top 300 domains. I fetched \u003Ccode>https:\u002F\u002F&lt;domain&gt;\u002Frobots.txt\u003C\u002Fcode>, and tried \u003Ccode>www.\u003C\u002Fcode> when the bare domain didn't answer. I kept only responses that were real robots.txt files (HTTP 200, not HTML, with at least one \u003Ccode>User-agent\u003C\u002Fcode> line). A lot of Tranco's top entries are CDN and API hostnames with no website, so \u003Cstrong>138 of the 300\u003C\u002Fstrong> gave a usable file. Each file was parsed with Python's \u003Ccode>urllib.robotparser\u003C\u002Fcode>, and a bot counts as \"blocked\" only if it may not fetch \u003Ccode>\u002F\u003C\u002Fcode>. Partial blocks such as \u003Ccode>Disallow: \u002Farticles\u002F\u003C\u002Fcode> don't count.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6abd6abbdaf2e37fa7c251c3\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd6abbdaf2e37fa7c251c8-0-a650f60c.png\" alt=\"Analyzing the robots.txt files of the world&#39;s most visited websites.\" loading=\"lazy\">\u003Cfigcaption>Analyzing the robots.txt files of the world&#39;s most visited websites.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>Results, out of 138 sites:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>46\u003C\u002Fstrong> name at least one AI crawler. The other 92 don't mention AI bots at all.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>33\u003C\u002Fstrong> block OpenAI's training crawler, \u003Ccode>GPTBot\u003C\u002Fcode>, at the root. 19 of them name it explicitly. The other 14 catch it with a blanket \u003Ccode>User-agent: *\u003C\u002Fcode> \u002F \u003Ccode>Disallow: \u002F\u003C\u002Fcode>: an allowlist approach where every bot not named is shut out (reddit.com, x.com and imdb.com work this way). 18 sites have that deny-all default, though a few, such as facebook.com, then give \u003Ccode>GPTBot\u003C\u002Fcode> its own group with partial access.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>14\u003C\u002Fstrong> block \u003Ccode>GPTBot\u003C\u002Fcode> but let \u003Ccode>OAI-SearchBot\u003C\u002Fcode> in. That is the \"no training, yes search\" split: medium.com, reuters.com, yahoo.com, ebay.com, canva.com, vimeo.com, snapchat.com, sciencedirect.com and others.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>19\u003C\u002Fstrong> block both, among them amazon.com, nytimes.com, bbc.com, cnn.com, tiktok.com and pinterest.com.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>34\u003C\u002Fstrong> block Anthropic's \u003Ccode>ClaudeBot\u003C\u002Fcode>. \u003Cstrong>15\u003C\u002Fstrong> of those still allow \u003Ccode>Claude-SearchBot\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>9\u003C\u002Fstrong> block \u003Ccode>ChatGPT-User\u003C\u002Fcode> by name: amazon.com, amazonvideo.com, nytimes.com, cnn.com, bbc.com, bbc.co.uk, msn.com, yahoo.com and tiktok.com. That line probably does less than they think (see below).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>5\u003C\u002Fstrong> use Cloudflare's new \u003Ccode>Content-Signal\u003C\u002Fcode> line (cloudflare.com, sentry.io, launchpad.net, linktr.ee, forter.com).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>So the thread's numbers are in the right ballpark: a minority blocks training outright, and a smaller group separates training from search. A wider dataset agrees. An analysis of about 4,200 robots.txt files from Cloudflare Radar found \u003Ccode>GPTBot\u003C\u002Fcode> in a \u003Ccode>Disallow\u003C\u002Fcode> group 696 times and an \u003Ccode>Allow\u003C\u002Fcode> group 299 times (2.33 to 1), while \u003Ccode>OAI-SearchBot\u003C\u002Fcode> was allowed slightly more often than blocked (266 to 250). Publishers aren't blocking \"AI\". They are blocking training and keeping the bots that send readers.\u003C\u002Fp>\n\u003Cp>Caveats: \u003Ccode>robotparser\u003C\u002Fcode> applies the first matching rule rather than the longest-match rule from RFC 9309, so a few edge cases may be off. And a top-300 list is dominated by giants; your competitors' sites may look very different.\u003C\u002Fp>\n\n\u003Ch2>What each directive actually controls\u003C\u002Fh2>\n\u003Cp>The bots split into three jobs. Each vendor uses a separate user agent for each job:\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6abd6abbdaf2e37fa7c251cd\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd6abbdaf2e37fa7c251d2-0-bb563ea9.png\" alt=\"Different bot directives act as filters for training, search, and user requests.\" loading=\"lazy\">\u003Cfigcaption>Different bot directives act as filters for training, search, and user requests.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cul>\n\u003Cli>\u003Cstrong>Training\u003C\u002Fstrong>: \u003Ccode>GPTBot\u003C\u002Fcode> (OpenAI), \u003Ccode>ClaudeBot\u003C\u002Fcode> (Anthropic), \u003Ccode>CCBot\u003C\u002Fcode> (Common Crawl, which many model builders use), \u003Ccode>Bytespider\u003C\u002Fcode>, \u003Ccode>meta-externalagent\u003C\u002Fcode>. Block these and your future content stays out of training sets, if the crawler honours robots.txt. OpenAI and Anthropic both say theirs do.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Search indexing for AI answers\u003C\u002Fstrong>: \u003Ccode>OAI-SearchBot\u003C\u002Fcode> (\"used to surface websites in search results in ChatGPT's search features\"), \u003Ccode>Claude-SearchBot\u003C\u002Fcode>, \u003Ccode>PerplexityBot\u003C\u002Fcode>. Block these and you stop showing up as a cited source.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-triggered fetches\u003C\u002Fstrong>: \u003Ccode>ChatGPT-User\u003C\u002Fcode>, \u003Ccode>Claude-User\u003C\u002Fcode>. These run when a person asks the assistant to open your page. OpenAI's docs say plainly that because these actions are user-initiated, \u003Cem>robots.txt rules may not apply\u003C\u002Fem>. Anthropic says disabling \u003Ccode>Claude-User\u003C\u002Fcode> in robots.txt prevents retrieval for user queries. So the same line gets different treatment from different vendors.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Then there are the \u003Cstrong>tokens that aren't crawlers\u003C\u002Fstrong>. \u003Ccode>Google-Extended\u003C\u002Fcode> and \u003Ccode>Applebot-Extended\u003C\u002Fcode> never show up in your access logs. Googlebot and Applebot do the crawling, and the \u003Ccode>-Extended\u003C\u002Fcode> token in robots.txt only tells the company whether it may use what was crawled for its AI models. Google says \u003Ccode>Google-Extended\u003C\u002Fcode> doesn't affect inclusion in Google Search. This matters at the edge: you can't block \u003Ccode>Google-Extended\u003C\u002Fcode> by user agent, because no request ever carries that name.\u003C\u002Fp>\n\n\u003Ch2>robots.txt vs the network edge\u003C\u002Fh2>\n\u003Cp>robots.txt is a request. It works for crawlers that choose to obey it, and it does nothing to a scraper that doesn't. The alternative is to block at the edge: a CDN or your reverse proxy refuses the request before it reaches your app.\u003C\u002Fp>\n\u003Cfigure data-post-media=\"6abd6abbdaf2e37fa7c251d7\">\u003Cimg src=\"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abd6abbdaf2e37fa7c251dc-0-d1a9d05f.png\" alt=\"The difference between a requested policy and a technical enforcement.\" loading=\"lazy\">\u003Cfigcaption>The difference between a requested policy and a technical enforcement.\u003C\u002Ffigcaption>\u003C\u002Ffigure>\n\u003Cp>The biggest edge is already doing this. Since \u003Cstrong>July 1, 2025\u003C\u002Fstrong>, Cloudflare blocks known AI crawlers by default on newly added domains, and asks new customers whether they want to allow them. It also runs a managed robots.txt that it says more than 3.8 million domains use. That file defaults to \u003Ccode>Content-Signal: search=yes, ai-train=no\u003C\u002Fcode>, which is why the line now shows up in scans. Cloudflare says itself that content signals are a \u003Cem>preference\u003C\u002Fem>, not a technical control. A bot that ignores them isn't stopped.\u003C\u002Fp>\n\u003Cp>So the two layers do different jobs:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>robots.txt\u003C\u002Fstrong> states your policy and is honoured by the well-behaved vendors. That covers most of the traffic that matters (OpenAI, Anthropic, Google, Apple, Common Crawl).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Edge blocking\u003C\u002Fstrong> enforces the policy against bots that identify themselves but ignore it, and saves bandwidth. It can't touch token-only opt-outs like \u003Ccode>Google-Extended\u003C\u002Fcode>. It also won't catch scrapers that fake a browser user agent; for those you need bot scoring from your CDN.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>A copy-paste policy for a small SaaS site\u003C\u002Fh2>\n\u003Cp>My default for a product site that wants to be cited in AI answers without feeding training: allow search bots, opt out of training, and keep everyone out of the app and API. Replace \u003Ccode>example.com\u003C\u002Fcode> and the paths with your own.\u003C\u002Fp>\n\u003Cpre>\u003Ccode># AI search \u002F answer engines: may index public pages\nUser-agent: OAI-SearchBot\nUser-agent: Claude-SearchBot\nUser-agent: PerplexityBot\nAllow: \u002F\nDisallow: \u002Fapp\u002F\nDisallow: \u002Fapi\u002F\n\n# Model training: opted out\nUser-agent: GPTBot\nUser-agent: ClaudeBot\nUser-agent: CCBot\nUser-agent: Google-Extended\nUser-agent: Applebot-Extended\nUser-agent: Bytespider\nUser-agent: meta-externalagent\nDisallow: \u002F\n\n# Everyone else (Googlebot, Bingbot, ...)\nUser-agent: *\nContent-Signal: search=yes, ai-train=no\nAllow: \u002F\nDisallow: \u002Fapp\u002F\nDisallow: \u002Fapi\u002F\n\nSitemap: https:\u002F\u002Fexample.com\u002Fsitemap.xml\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Two details that trip people up. First, a crawler follows \u003Cem>only\u003C\u002Fem> the most specific group that matches it, so the search-bot group has to repeat the \u003Ccode>\u002Fapp\u002F\u003C\u002Fcode> and \u003Ccode>\u002Fapi\u002F\u003C\u002Fcode> rules; it doesn't inherit them from \u003Ccode>*\u003C\u002Fcode>. Second, parsers that don't understand \u003Ccode>Content-Signal\u003C\u002Fcode> just ignore the line, so it is safe to include. If you \u003Cem>want\u003C\u002Fem> your docs in training data (some developer-tool companies do, so that models know their API), move \u003Ccode>GPTBot\u003C\u002Fcode> and \u003Ccode>ClaudeBot\u003C\u002Fcode> into the first group.\u003C\u002Fp>\n\n\u003Ch3>Enforce it at the edge (nginx)\u003C\u002Fh3>\n\u003Cp>This returns 403 to training crawlers that announce themselves, but still lets them read robots.txt. \u003Ccode>Google-Extended\u003C\u002Fcode> and \u003Ccode>Applebot-Extended\u003C\u002Fcode> are left out on purpose, since they never appear as user agents.\u003C\u002Fp>\n\u003Cpre>\u003Ccode># http {} context\nmap $http_user_agent $ai_training_bot {\n    default 0;\n    ~*(GPTBot|ClaudeBot|CCBot|Bytespider|meta-externalagent) 1;\n}\n\nserver {\n    listen 443 ssl;\n    server_name example.com;\n    # ssl_certificate ... (your existing TLS config)\n\n    location = \u002Frobots.txt {\n        root \u002Fvar\u002Fwww\u002Fexample;\n    }\n\n    location \u002F {\n        if ($ai_training_bot) {\n            return 403;\n        }\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>On Cloudflare you don't need any of this. Turn on the AI bot blocking in the dashboard's bot settings and keep the robots.txt above as the written policy.\u003C\u002Fp>\n\n\u003Ch3>Check what you're actually serving\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>python3 - &lt;&lt;'EOF'\nfrom urllib.robotparser import RobotFileParser\n\nrp = RobotFileParser(\"https:\u002F\u002Fexample.com\u002Frobots.txt\")\nrp.read()\nfor ua in [\"GPTBot\", \"OAI-SearchBot\", \"ChatGPT-User\", \"ClaudeBot\",\n           \"Claude-SearchBot\", \"Google-Extended\", \"CCBot\", \"Googlebot\"]:\n    print(f\"{ua:18} {'allowed' if rp.can_fetch(ua, '\u002F') else 'blocked'}\")\nEOF\n\n# and the edge rule:\ncurl -s -o \u002Fdev\u002Fnull -w \"%{http_code}\\n\" -A \"GPTBot\u002F1.1\" https:\u002F\u002Fexample.com\u002F\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>One gotcha: if your WAF answers \u003Ccode>robotparser\u003C\u002Fcode>'s default Python user agent with 401 or 403, the parser treats the whole site as blocked. Check the fetch works before you trust the output.\u003C\u002Fp>\n\n\u003Ch2>The takeaway\u003C\u002Fh2>\n\u003Cp>Among the biggest sites, blocking AI training is a minority position (33 of 138 in this scan), and the sites that do it are increasingly separating training from search. For a small SaaS, the sensible default is the same split: opt out of training in robots.txt, stay visible to AI search, and add an edge rule for crawlers that identify themselves. Don't count on robots.txt to stop user-triggered fetches from ChatGPT; OpenAI says it may not apply.\u003C\u002Fp>\n\n\u003Ch2>Sources\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftranco-list.eu\u002Flist\u002FV349N\u002F1000000\">Tranco list V349N (2026-09-29)\u003C\u002Fa>, which was the input for the scan\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fbots\">OpenAI: Overview of OpenAI crawlers\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsupport.claude.com\u002Fen\u002Farticles\u002F8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler\">Anthropic: Does Anthropic crawl data from the web?\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fblog.cloudflare.com\u002Fcontent-signals-policy\u002F\">Cloudflare: Giving users choice with Cloudflare's new Content Signals Policy\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fbots\u002Fadditional-configurations\u002Fmanaged-robots-txt\u002F\">Cloudflare docs: Managed robots.txt\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsecuritybrief.co.nz\u002Fstory\u002Fcloudflare-makes-ai-crawlers-opt-in-giving-power-to-creators\">SecurityBrief: Cloudflare makes AI crawlers opt-in (July 2025)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Ftechnologychecker.io\u002Fblog\u002Frobots-txt-ai-crawlers-blocking-report\">TechnologyChecker: robots.txt across Cloudflare's network\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fx.com\u002Fteneo_protocol\u002Fstatus\u002F2103478843465998631\">@teneo_protocol on X (the top-300 claim)\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n","I scanned robots.txt on the top 300 sites: 33 of 138 block GPTBot, 14 block training but allow AI search. What each AI bot directive controls, why robots.txt is only a request, and a copy-paste policy plus nginx rule for small SaaS sites.",[9,10,11,12,13],"ai","robots-txt","seo","cloudflare","saas","if.codes","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abcd9c1838b650cb96b3d1b-0-11f94198.png","2026-09-30T21:00:20.673Z","Who blocks AI crawlers? robots.txt scan of the top 300 sites","33 of 138 top sites block GPTBot; 14 block training but allow AI search. What each directive controls, plus a copy-paste robots.txt and nginx rule.",7,[21,33,42],{"slug":22,"title":23,"type":24,"summary":25,"tags":26,"author":14,"cover_url":30,"published_at":31,"updated_at":32},"bullet-time-with-first-last-frame-video","Bullet time with first\u002Flast-frame video: orbiting a frozen moment from three stills","blog","A freeze-frame camera orbit built from generated stills: one action shot, two camera-move angles, two first\u002Flast-frame clips between them, stitched and ping-ponged. The pipeline, the seams, and where the model re-imagines the water.",[9,27,28,29],"comfyui","video-generation","flowdsl","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abae46c45201648bfd477a7-0-6f4d036e.png","2026-09-28T22:42:41Z","2026-09-28T22:42:41.6Z",{"slug":34,"title":35,"type":24,"summary":36,"tags":37,"author":14,"cover_url":39,"published_at":40,"updated_at":41},"an-ai-media-pipeline-that-shows-its-work","An AI media pipeline that shows its work: ComfyUI presets, FlowDSL routing and the misses","How the images on my sites are generated: four ComfyUI presets behind one Go module, job rows as state, FlowDSL flows for routing, per-post media in the admin — and the bugs and model misses I hit shipping it. This post's own images were made the same way.",[9,29,27,38],"image-generation","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6aba8ba317ceba3543925be4-0-2f6b8a5c.png","2026-09-28T15:57:50Z","2026-09-28T15:57:50.784Z",{"slug":43,"title":44,"type":24,"summary":45,"tags":46,"author":14,"cover_url":50,"published_at":51,"updated_at":52},"openai-embeddings-python-mongodb","Transforming Text into Vectors: OpenAI Embeddings in Python","Learn how to generate text embeddings with the OpenAI API in Python to power semantic search, recommendations, and more. Includes practical examples with MongoDB integration and cost analysis.",[47,9,48,49],"openai","python","mongodb","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c2d-0-2e60b732.png","2024-11-23T00:00:00Z","2026-09-28T22:31:01.385Z",[54,56,59,61,64,75,84,95],{"slug":4,"title":5,"type":24,"summary":7,"tags":55,"author":14,"cover_url":15,"published_at":16,"updated_at":16,"reading_minutes":19},[9,10,11,12,13],{"slug":22,"title":23,"type":24,"summary":25,"tags":57,"author":14,"cover_url":30,"published_at":31,"updated_at":32,"reading_minutes":58},[9,27,28,29],4,{"slug":34,"title":35,"type":24,"summary":36,"tags":60,"author":14,"cover_url":39,"published_at":40,"updated_at":41,"reading_minutes":19},[9,29,27,38],{"slug":43,"title":44,"type":24,"summary":45,"tags":62,"author":14,"cover_url":50,"published_at":51,"updated_at":52,"reading_minutes":63},[47,9,48,49],3,{"slug":65,"title":66,"type":24,"summary":67,"tags":68,"author":14,"cover_url":71,"published_at":72,"updated_at":73,"reading_minutes":74},"check-pricing-availability-ing-domains","Last Chance to Grab Short .ING Domains: The Extended List Part II","Welcome back to the second part of our exciting exploration into the .ING domain zone! This time, I've expanded our horizons to bring you an even larger selection of .ING domain names. List of over 24,000 domain names inside.",[69,70],"domains","business","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c38-0-c55f4c8d.png","2023-12-14T00:00:00Z","2026-09-28T22:31:01.453Z",1,{"slug":76,"title":77,"type":24,"summary":78,"tags":79,"author":14,"cover_url":80,"published_at":81,"updated_at":82,"reading_minutes":83},"impressive-ing-domains","Unveiling the Impressive .ING Domains","Discover the vast potential of the new .ING domain zone in my latest blog post! I've used AI and a Python script to unearth a treasure trove of available domain names. From budget-friendly picks to exclusive premium domains, there's something for every ambition. Plus, a special list of unique, lesser-known domains awaits.",[69,70],"https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c43-0-03be24b7.png","2023-12-11T00:00:00Z","2026-09-28T22:31:01.527Z",2,{"slug":85,"title":86,"type":24,"summary":87,"tags":88,"author":14,"cover_url":92,"published_at":93,"updated_at":94,"reading_minutes":63},"secured-web-server-in-5-minutes","Fortify Web Server Security in 5 Minutes with Tailscale","Tailscale revolutionizes secure networking with its user-friendly approach, effortlessly connecting devices across diverse networks.",[89,90,91],"firewall","tailscale","webserver","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c4e-0-eae6f62d.png","2023-11-03T00:00:00Z","2026-09-28T22:31:01.597Z",{"slug":96,"title":97,"type":24,"summary":98,"tags":99,"author":14,"cover_url":102,"published_at":103,"updated_at":104,"reading_minutes":105},"lets-encrypt-free-ssl","How to Secure Your Website with Free SSL Certificates for a Lifetime","Let’s Encrypt certificates have revolutionized internet security by providing free, automated, and widely trusted SSL\u002FTLS certificates. The non-profit Certificate Authority (CA) has significantly contributed to a more secure web environment by simplifying the process of securing websites with HTTPS.",[100,101,91],"ssl","https","https:\u002F\u002Fmedia.stufio.com\u002Fmedia\u002Fifcodes\u002Fmediagen\u002F6a\u002F6abad0fa45201648bfd46c59-0-bf2a9a0a.png","2023-11-01T00:00:00Z","2026-09-28T22:39:13.555Z",6]