
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Mon, 13 Apr 2026 20:18:47 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Enhanced security and simplified controls with automated botnet protection, cipher suite selection, and URL Scanner updates]]></title>
            <link>https://blog.cloudflare.com/enhanced-security-and-simplified-controls-with-automated-botnet-protection/</link>
            <pubDate>Mon, 17 Mar 2025 13:00:00 GMT</pubDate>
            <description><![CDATA[ Enhanced security, simplified control! This Security Week, Cloudflare unveils automated botnet protection, flexible cipher suites, and an upgraded URL Scanner. ]]></description>
            <content:encoded><![CDATA[ <p>At Cloudflare, we are constantly innovating and launching new features and capabilities across our product portfolio. Today, we're releasing a number of new features aimed at improving the security tools available to our customers.</p><p><b>Automated security level: </b>Cloudflare’s Security Level setting has been improved and no longer requires manual configuration. By integrating botnet data along with other request rate signals, all customers are protected from confirmed known malicious botnet traffic without any action required.</p><p><b>Cipher suite selection:</b> You now have greater control over encryption settings via the Cloudflare dashboard, including specific cipher suite selection based on our client or compliance requirements.</p><p><b>Improved URL scanner:</b> New features include bulk scanning, similarity search, location picker and more.</p><p>These updates are designed to give you more power and flexibility when managing online security, from proactive threat detection to granular control over encryption settings.</p>
    <div>
      <h3>Automating Security Level to provide stronger protection for all</h3>
      <a href="#automating-security-level-to-provide-stronger-protection-for-all">
        
      </a>
    </div>
    <p>Cloudflare’s <a href="https://developers.cloudflare.com/waf/tools/security-level/"><u>Security Level feature</u></a> was designed to protect customer websites from malicious activity.</p><p>Available to all Cloudflare customers, including the free tier, it has always had very simple logic: if a connecting client IP address has shown malicious behavior across our network, issue a <a href="https://developers.cloudflare.com/waf/reference/cloudflare-challenges/"><u>managed challenge</u></a>. The system tracks malicious behavior by assigning a threat score to each IP address. The more bad behavior is observed, the higher the score. Cloudflare customers could configure <a href="https://developers.cloudflare.com/waf/tools/security-level/"><u>the threshold that would trigger the challenge</u></a>.</p><p>We are now announcing an update to how Security Level works, by combining the IP address threat signal with threshold and botnet data. The resulting detection improvements have allowed us to automate the configuration, no longer requiring customers to set a threshold.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1RFWQl2Da9xu9MdfbJCRhy/8750770351d124ecf8d2f2b274f2e3cc/image1.png" />
          </figure><p>The Security Level setting is now <b>Always protected</b> in the dashboard, and ip_threat_score fields in WAF Custom Rules will no longer be populated. No change is required by Cloudflare customers. The <a href="https://developers.cloudflare.com/fundamentals/reference/under-attack-mode/"><u>“I am under attack”</u></a> option remains unchanged.</p>
    <div>
      <h3>Stronger protection, by default, for all customers</h3>
      <a href="#stronger-protection-by-default-for-all-customers">
        
      </a>
    </div>
    <p>Although we always favor simplicity, privacy-related services, including our own WARP, have seen growing use. Meanwhile, <a href="https://en.wikipedia.org/wiki/Carrier-grade_NAT"><u>carrier-grade network address translation (CGNATs)</u></a> and outbound forward proxies have been widely used for many years.</p><p>These services often result in multiple users sharing the same IP address, which can lead to legitimate users being challenged unfairly since individual addresses don’t strictly correlate with unique client behavior. Moreover, threat actors have become increasingly adept at anonymizing and dynamically changing their IP addresses using tools like VPNs, proxies, and botnets, further diminishing the reliability of IP addresses as a standalone indicator of malicious activity. Recognising these limitations, it was time for us to revisit Security Level’s logic to reduce the number of false positives being observed.</p><p>In February 2024, we introduced a new security system that automatically combines the real-time DDoS score with a traffic threshold and a botnet tracking system. The real-time DDoS score is part of our autonomous DDoS detection system, which analyzes traffic patterns to identify potential threats. This system superseded and replaced the existing Security Level logic, and is deployed on all customer traffic, including free plans. After thorough monitoring and analysis over the past year, we have confirmed that these behavior-based mitigation systems provide more accurate results. Notably, we've observed a significant reduction in false positives, demonstrating the limitations of the previous IP address-only logic.</p>
    <div>
      <h4>Better botnet tracking</h4>
      <a href="#better-botnet-tracking">
        
      </a>
    </div>
    <p>Our new logic combines IP address signals with behavioral and threshold indicators to improve the accuracy of botnet detection. While IP addresses alone can be unreliable due to potential false positives, we enhance their utility by integrating them with additional signals. We monitor surges in traffic from known "bad" IP addresses and further refine this data by examining specific properties such as path, accept, and host headers.</p><p>We also introduced a new botnet tracking system that continuously detects and tracks botnet activity across the Cloudflare network. From our unique vantage point as a <a href="https://w3techs.com/technologies/overview/proxy"><u>reverse proxy for nearly 20% of all websites</u></a>, we maintain a dynamic database of IP addresses associated with botnet activity. This database is continuously updated, enabling us to automatically respond to emerging threats without manual intervention. This effect is visible in the <a href="https://radar.cloudflare.com/security-and-attacks?dateStart=2024-02-01&amp;dateEnd=2024-03-31#mitigated-traffic-sources"><u>Cloudflare Radar chart</u></a> below, as we saw sharp growth in DDoS mitigations in February 2024 as the botnet tracking system was implemented.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3yOP8zoC5ZLVi4WHnXI0jH/ef3fd6ad10e8357b6b4f1bfb90e6d6b6/image4.png" />
          </figure>
    <div>
      <h4>What it means for our customers and their users</h4>
      <a href="#what-it-means-for-our-customers-and-their-users">
        
      </a>
    </div>
    <p>Customers now get better protection while having to manage fewer configurations, and they can rest assured that their online presence remains fully protected. These security measures are integrated and enabled by default across all of our plans, ensuring protection without the need for manual configuration or rule management.
This improvement is particularly beneficial for users accessing sites through proxy services or CGNATs, as these setups can sometimes trigger unnecessary security checks, potentially disrupting access to websites.</p>
    <div>
      <h4>What’s next</h4>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>Our team is looking at defining the next generation of threat scoring mechanisms. This initiative aims to provide our customers with more relevant and effective controls and tools to combat today's and tomorrow's potential security threats.</p><p>Effective March 17, 2025, we are removing the option to configure manual rules using the threat score parameter in the Cloudflare dashboard. The "I'm Under Attack" mode remains available, allowing users to issue managed challenges to all traffic when needed.</p><p>By the end of Q1 2026, we anticipate disabling all rules that rely on IP threat score. This means that using the threat score parameter in the Rulesets API and via Terraform won’t be available after the end of the transition period. However, we encourage customers to be proactive and edit or remove the rules containing the threat score parameter starting today.</p>
    <div>
      <h3>Cipher suite selection now available in the UI</h3>
      <a href="#cipher-suite-selection-now-available-in-the-ui">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2e5Q0ghzpkuTQrR335fzIa/156b9531735fd9164768970fd08f5f85/image5.png" />
          </figure><p>Building upon our core security features, we're also giving you more control over your encryption: cipher suite selection is now available in the Cloudflare dashboard! </p><p>When a client initiates a visit to a Cloudflare-protected website, a <a href="https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake/"><u>TLS handshake</u></a> occurs, where clients present a list of supported <a href="https://developers.cloudflare.com/ssl/edge-certificates/additional-options/cipher-suites/"><u>cipher suites</u></a> — cryptographic algorithms crucial for secure connections. While newer algorithms enhance security, balancing this with broad compatibility is key, as some customers prioritise reach by supporting older devices, even with less secure ciphers. To accommodate varied client needs, Cloudflare's default settings emphasise wide compatibility, allowing customers to tailor cipher suite selection based on their priorities: strong security, compliance (PCI DSS, FIPS 140-2), or legacy device support.</p><p>Previously, customizing cipher suites required multiple API calls, proving cumbersome for many users. Now, Cloudflare introduces Cipher Suite Selection to the dashboard. This feature introduces user-friendly selection flows like security recommendations, compliance presets, and custom selections.  </p>
    <div>
      <h4>Understanding cipher suites</h4>
      <a href="#understanding-cipher-suites">
        
      </a>
    </div>
    <p>Cipher suites are collections of cryptographic algorithms used for key exchange, authentication, encryption, and message integrity, essential for a TLS handshake. During the handshake’s initiation, the client sends a "client hello" message containing a list of supported cipher suites. The server responds with a "server hello" message, choosing a cipher suite from the client's list based on security and compatibility. This chosen cipher suite forms the basis of TLS termination and plays a crucial role in establishing a secure HTTPS connection. Here’s a quick overview of each component:</p><ul><li><p><b>Key exchange algorithm:</b> Secures the exchange of encryption keys between parties.</p></li><li><p><b>Authentication algorithm:</b> Verifies the identities of the communicating parties.</p></li><li><p><b>Encryption algorithm:</b> Ensures the confidentiality of the data.</p></li><li><p><b>Message integrity algorithm:</b> Confirms that the data remains unaltered during transmission.</p></li></ul><p><a href="https://www.geeksforgeeks.org/perfect-forward-secrecy/"><b><u>Perfect forward secrecy</u></b></a><b> </b>is an important feature of modern cipher suites. It ensures that each session's encryption keys are generated independently, which means that even if a server’s private key is compromised in the future, past communications remain secure.</p>
    <div>
      <h4>What we are offering </h4>
      <a href="#what-we-are-offering">
        
      </a>
    </div>
    <p>You can find cipher suite configuration under Edge Certificates in your zone’s SSL/TLS dashboard. There, you will be able to view your allow-listed set of cipher suites. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6fT7BvPow3zvKTl1JYw7yX/8dcd8b797f671b05211defaaf4c4bb83/image5.png" />
          </figure><p>Additionally, you will be able to choose from three different user flows, depending on your specific use case, to seamlessly select your appropriate list. Those three user flows are: security recommendation selection, compliance selection, or custom selection. The goal of the user flows is to outfit customers with cipher suites that match their goals and priorities, whether those are maximum compatibility or best possible security.</p><p>1. Security recommendations </p><p>To streamline the process, we have turned our <a href="https://developers.cloudflare.com/ssl/reference/cipher-suites/recommendations/"><u>cipher suites recommendations</u></a> into selectable options. This is in an effort to expose our customers to cipher suites in a tangible way and enable them to choose between different security configurations and compatibility. Here is what they mean:</p><ul><li><p><b>Modern:</b> Provides the highest level of security and performance with support for Perfect Forward Secrecy and <a href="https://www.ietf.org/archive/id/draft-irtf-cfrg-aead-properties-03.html"><u>Authenticated Encryption (AEAD)</u></a>. Ideal for customers who prioritize top-notch security and performance, such as financial institutions, healthcare providers, or government agencies. This selection requires TLS 1.3 to be enabled and the minimum TLS version set to 1.2.</p></li><li><p><b>Compatible:</b> Balances security and compatibility by offering forward-secret cipher suites that are broadly compatible with older systems. Suitable for most customers who need a good balance between security and reach. This selection also requires TLS 1.3 to be enabled and the minimum TLS version set to 1.2.</p></li><li><p><b>Legacy:</b> Optimizes for the widest reach, supporting a wide range of legacy devices and systems. Best for customers who do not handle sensitive data and need to accommodate a variety of visitors. This option is ideal for blogs or organizations that rely on older systems.</p></li></ul><p>2. Compliance selection</p><p>Additionally, we have also turned our <a href="https://developers.cloudflare.com/ssl/reference/cipher-suites/compliance-status/"><u>compliance recommendations</u></a> into selectable options to make it easier for our customers to meet their PCI DSS or FIPS-140-2 requirements.</p><ul><li><p><a href="https://www.pcisecuritystandards.org/standards/pci-dss/"><b><u>PCI DSS Compliance:</u></b></a> Ensures that your cipher suite selection aligns with PCI DSS standards for protecting cardholder data. This option will enforce a requirement to set a minimum TLS version of 1.2, and TLS 1.3 to be enabled, to maintain compliance.</p><ul><li><p>Since the list of supported cipher suites require TLS 1.3 to be enabled and a minimum TLS version of 1.2 in order to be compliant, we will disable compliance selection until the zone settings are updated to meet those requirements. This effort is to ensure that our customers are truly compliant and have the proper zone settings to be so. </p></li></ul></li><li><p><a href="https://csrc.nist.gov/pubs/fips/140-2/upd2/final"><b><u>FIPS 140-2 Compliance</u></b><u>:</u></a> Tailored for customers needing to meet federal security standards for cryptographic modules. Ensures that your encryption practices comply with FIPS 140-2 requirements.</p></li></ul><p>3. Custom selection </p><p>For customers needing precise control, the custom selection flow allows individual cipher suite selection, excluding TLS 1.3 suites which are automatically enabled with TLS 1.3. To prevent disruptions, guardrails ensure compatibility by validating that the minimum TLS version aligns with the selected cipher suites and that the <a href="https://www.cloudflare.com/application-services/products/ssl/">SSL/TLS certificate</a> is compatible (e.g., RSA certificates require RSA cipher suites).</p>
    <div>
      <h3>API </h3>
      <a href="#api">
        
      </a>
    </div>
    <p>The <a href="https://developers.cloudflare.com/ssl/edge-certificates/additional-options/cipher-suites/"><u>API</u></a> will still be available to our customers. This aims to support an existing framework, especially to customers who are already API reliant. Additionally, Cloudflare preserves the specified cipher suites in the order they are set via the API and that control of ordering will remain unique to our API offering. </p><p>With your Advanced Certificate Manager or Cloudflare for SaaS subscription, head to Edge Certificates in your zone’s SSL dashboard and give it a try today!</p>
    <div>
      <h3>Smarter scanning, safer Internet with the new version of URL Scanner</h3>
      <a href="#smarter-scanning-safer-internet-with-the-new-version-of-url-scanner">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5eFwJMzk3JuwYNKcSk4kiH/63e4a8713be583d83df737cf6f59281d/image10.png" />
          </figure><p>Cloudflare's URL Scanner is a tool designed to detect and analyze potential security threats like phishing and malware by scanning and evaluating websites, providing detailed insights into their safety and technology usage. We've leveraged our own <a href="https://developers.cloudflare.com/radar/investigate/url-scanner/"><u>URL Scanner</u></a> to enhance our internal <u>Trust &amp; Safety efforts</u>, automating the detection and mitigation of some forms of abuse on our platform. This has not only strengthened our own security posture, but has also directly influenced the development of the new features we're announcing today. </p><p>Phishing attacks are on the rise across the Internet, and we saw a major opportunity to be "customer zero" for our URL Scanner to address abuse on our own network. By working closely with our Trust &amp; Safety team to understand how the URL Scanner could better identify potential phishing attempts, we've improved the speed and accuracy of our response to abuse reports, making the Internet safer for everyone. Today, we're excited to share the new API version and the latest updates to URL Scanner, which include the ability to scan from specific geographic locations, bulk scanning, search by Indicators of Compromise (IOCs), improved UI and information display, comprehensive IOC listings, advanced sorting options, and more. These features are the result of our own experiences in leveraging URL Scanner to safeguard our platform and our customers, and we're confident that they will prove useful to our security analysts and threat intelligence users.</p>
    <div>
      <h4>Scan up to 100 URLs at once by using bulk submissions</h4>
      <a href="#scan-up-to-100-urls-at-once-by-using-bulk-submissions">
        
      </a>
    </div>
    <p>Cloudflare Enterprise customers can now conduct routine scans of their web assets to identify emerging vulnerabilities, ensuring that potential threats are addressed proactively, by using the <a href="https://developers.cloudflare.com/api/resources/url_scanner/subresources/scans/methods/bulk_create/"><u>Bulk Scanning API endpoint</u></a>. Another use case for the bulk scanning functionality is developers leveraging bulk scanning to verify that all URLs your team is accessing are secure and free from potential exploits before launching new websites or updates.</p><p>Scanning of multiple URLs addresses the specific needs of our users engaged in threat hunting. Many of them maintain extensive lists of URLs that require swift investigation to identify potential threats. Currently, they face the task of submitting these URLs one by one, which not only slows down their workflow but also increases the manual effort involved in their security processes. With the introduction of bulk submission capabilities, users can now submit up to 100 URLs at a time for scanning. </p>
    <div>
      <h4>How we built the bulk scanning feature</h4>
      <a href="#how-we-built-the-bulk-scanning-feature">
        
      </a>
    </div>
    <p>Let’s look at a regular workflow:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6l8aN6xhN4HEfw4ZMi1MT8/5eb62472b42f75487c55b17b3415b584/image6.png" />
          </figure><p>In this workflow, when the user submits a new scan, we create a <a href="https://developers.cloudflare.com/durable-objects/"><u>Durable Object</u></a> with the same ID as the scan, save the scan options, like the URL to scan, to the <a href="https://developers.cloudflare.com/durable-objects/api/storage-api/"><u>Durable Objects’s storage</u></a> and schedule an <a href="https://developers.cloudflare.com/durable-objects/api/storage-api/#setalarm"><u>alarm</u></a> for a few seconds later. This allows us to respond immediately to the user, signalling a successful submission. A few seconds later the alarm triggers, and we start the scan itself. </p><p>However, with bulk scanning, the process is slightly different:</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2kXLJ5sSGBbM06H3Ftsrqi/a4440fd0efc7c0271580c6da6f08f814/image9.png" />
          </figure><p>In this case, there are no Durable Objects involved just yet; the system simply sends each URL in the bulk scan submission as a new message to the queue.</p><p>Notice that in both of these cases the scan is triggered asynchronously. In the first case, it starts when the Durable Objects alarm fires and, in the second case, when messages in the queue are consumed. While the durable object alarm will always fire in a few seconds, messages in the queue have no predetermined processing time, they may be processed seconds to minutes later, depending on how many messages are already in the queue and how fast the system processes them.</p><p>When users bulk scan, having the scan done at <i>some </i>point in time is more important than having it done <i>now</i>. When using the regular scan workflow, users are limited in the number of scans per minute they can submit. However, when using bulk scan this is not a concern, and users can simply send all URLs they want to process in a single HTTP request. This comes with the tradeoff that scans may take longer to complete, which is a perfect fit for <a href="https://developers.cloudflare.com/queues/"><u>Cloudflare Queues</u></a>. Having the ability to <a href="https://developers.cloudflare.com/queues/configuration/configure-queues/#consumer-worker-configuration"><u>configure</u></a> retries, max batch size, max batch timeouts, and max concurrency is something we’ve found very useful. As the scans are completed asynchronously, users can request the resulting scan reports <a href="https://developers.cloudflare.com/api/resources/url_scanner/subresources/scans/methods/get/"><u>via the API</u></a>.</p>
    <div>
      <h4>Discover related scans and better IOC search</h4>
      <a href="#discover-related-scans-and-better-ioc-search">
        
      </a>
    </div>
    <p>The <i>Related Scans</i> feature allows <a href="https://developers.cloudflare.com/api/resources/url_scanner/subresources/scans/methods/list/"><u>API</u></a>, <a href="http://dash.cloudflare.com"><u>Cloudflare dashboard</u></a> and <a href="http://radar.cloudflare.com"><u>Radar</u></a> users alike to view related scans directly within the URL Scanner Report. This helps users analyze and understand the context of a scanned URL by providing insights into similar URLs based on various attributes. Filter and search through URL Scanner reports to retrieve information on related scans, including those with identical favicons, similar HTML structures, and matching IP addresses.</p><p>The <i>Related Scans</i> tab presents a table with key headers corresponding to four distinct filters. Each entry includes the scanned URL and a direct link to view the detailed scan report, allowing for quick access to further information. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6yRzKVd0M9sNF1uGOWA1vb/212008b5296ad6df23088571f0602930/image3.png" />
          </figure><p>We've introduced the ability to search by indicators of compromise (IOCs), such as IP addresses and hashes, directly within the user interface. Additionally, we've added advanced filtering options by various criteria, including screenshots, hashes, favicons, and HTML body content. This allows for more efficient organization and prioritization of URLs based on specific needs. While attackers often make minor modifications to the HTML structure of phishing pages to evade detection, our advanced filtering options enable users to search for URLs with similar HTML content. This means that even if the visual appearance of a phishing page changes slightly, we can still identify connections to known phishing campaigns by comparing the underlying HTML structure. This proactive approach helps users identify and block these threats effectively.</p><p>Another use case for the advanced filtering options is the search by hash; a user who has identified a malicious JavaScript file through a previous investigation can now search using the file's hash. By clicking on an HTTP transaction, you'll find a direct link to the relevant hash, immediately allowing you to pivot your investigation. The real benefit comes from identifying other potentially malicious sites that have that same hash. This means that if you know a given script is bad, you can quickly uncover other compromised websites delivering the same malware.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3rWKgTrGLW297cVFbH9hSY/4555697b668d90f3df4d740bd91d3116/image7.png" />
          </figure><p>The user interface has also undergone significant improvements to enhance the overall experience. Other key updates include:</p><ul><li><p>Page title and favicon surfaced, providing immediate visual context</p></li><li><p>Detailed summaries are now available</p></li><li><p>Redirect chains allow users to understand the navigation path of a URL</p></li><li><p>The ability to scan files from URLs that trigger an automatic file download</p></li></ul>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5O55W8CLMrlPANpzkPAUY0/35748cb200feb79de6251c79d2be87f9/image2.png" />
          </figure>
    <div>
      <h4>Download HAR files</h4>
      <a href="#download-har-files">
        
      </a>
    </div>
    <p>With the latest updates to our URL Scanner, users can now download both the <a href="https://en.wikipedia.org/wiki/HAR_(file_format)"><u>HAR (HTTP Archive) file</u></a> and the JSON report from their scans. The <a href="https://blog.cloudflare.com/introducing-har-sanitizer-secure-har-sharing/"><u>HAR file</u></a> provides a detailed record of all interactions between the web browser and the scanned website, capturing crucial data such as request and response headers, timings, and status codes. This format is widely recognized in the industry and can be easily analyzed using various tools, making it invaluable for developers and security analysts alike.</p><p>For instance, a threat intelligence analyst investigating a suspicious URL can download the HAR file to examine the network requests made during the scan. By analyzing this data, they can identify potential malicious behavior, such as unexpected redirects and correlate these findings with other threat intelligence sources. Meanwhile, the JSON report offers a structured overview of the scan results, including security verdicts and associated IOCs, which can be integrated into broader security workflows or automated systems.</p>
    <div>
      <h4>New API version</h4>
      <a href="#new-api-version">
        
      </a>
    </div>
    <p>Finally, we’re announcing a <a href="https://developers.cloudflare.com/api/operations/urlscanner-create-scan-v2"><u>new version of our API</u></a>, allowing users to transition effortlessly to our service without needing to overhaul their existing workflows. Moving forward, any future features will be integrated into this updated API version, ensuring that users have access to the latest advancements in our URL scanning technology.</p><p>We understand that many organizations rely on automation and integrations with our previous API version. Therefore, we want to reassure our customers that there will be no immediate deprecation of the old API. Users can continue to use the existing API without disruption, giving them the flexibility to migrate at their own pace. We invite you to try the <a href="https://developers.cloudflare.com/api/operations/urlscanner-create-scan-v2"><u>new API</u></a> today and explore these new features to help with your web security efforts.</p>
    <div>
      <h3>Never miss an update</h3>
      <a href="#never-miss-an-update">
        
      </a>
    </div>
    <p>In summary, these updates to Security Level, cipher suite selection, and URL Scanner help us provide comprehensive, accessible, and proactive security solutions. Whether you're looking for automated protection, granular control over your encryption, or advanced threat detection capabilities, these new features are designed to empower you to build a safer and more secure online presence. We encourage you to explore these features in your Cloudflare dashboard and discover how they can benefit your specific needs.</p><p><i>We’ll continue to share roundup blog posts as we build and innovate. Follow along on the </i><a href="https://blog.cloudflare.com/"><i>Cloudflare Blog</i></a><i> for the latest news and updates. </i></p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[URL Scanner]]></category>
            <category><![CDATA[Threat Intelligence]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">5E0Ceo6CEHszKOpdxV3sl0</guid>
            <dc:creator>Alexandra Moraru</dc:creator>
            <dc:creator>Mia Malden</dc:creator>
            <dc:creator>Yomna Shousha</dc:creator>
            <dc:creator>Sofia Cardita</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare’s URL Scanner, new features, and the story of how we built it]]></title>
            <link>https://blog.cloudflare.com/building-urlscanner/</link>
            <pubDate>Fri, 08 Mar 2024 14:00:09 GMT</pubDate>
            <description><![CDATA[ Discover the enhanced URL Scanner API: Now with direct access from the Security Center Investigate Portal, enjoy unlisted scans, multi-device screenshots, and seamless integration within the Cloudflare ecosystem ]]></description>
            <content:encoded><![CDATA[ <p></p><p>Today, we’re excited to talk about <a href="https://radar.cloudflare.com/scan">URL Scanner</a>, a tool that helps everyone from security teams to everyday users to detect and safeguard against malicious websites by scanning and analyzing them. URL Scanner has executed almost a million scans since its <a href="/radar-url-scanner-early-access/">launch</a> last March on <a href="https://radar.cloudflare.com/scan">Cloudflare Radar</a>, driving us to continuously innovate and enhance its capabilities. Since that time, we have introduced unlisted scans, detailed malicious verdicts, enriched search functionality, and now, integration with Security Center and an official API, all built upon the robust foundation of <a href="https://developers.cloudflare.com/workers/">Cloudflare Workers</a>, <a href="https://developers.cloudflare.com/workers/runtime-apis/durable-objects/">Durable Objects</a>, and the <a href="/browser-rendering-open-beta/">Browser Rendering API</a>.</p>
    <div>
      <h2>Integration with the Security Center in the Cloudflare Dashboard</h2>
      <a href="#integration-with-the-security-center-in-the-cloudflare-dashboard">
        
      </a>
    </div>
    <p>Security Center is the single place in the Cloudflare Dashboard to map your <a href="https://www.cloudflare.com/learning/security/what-is-an-attack-surface/">attack surface</a>, identify potential security risks, and mitigate risks with a few clicks. Its users can now access the URL scanner directly from the <a href="https://developers.cloudflare.com/security-center/investigate/">Investigate Portal</a>, enhancing their cybersecurity workflow. These scans will be unlisted by default, ensuring privacy while facilitating a deep dive into <a href="https://www.cloudflare.com/learning/security/glossary/website-security-checklist/">website security.</a> Users will be able to see their historic scans and access the related reports when they need to, and they will benefit from automatic screenshots for multiple screen sizes, enriching the context of each scan.</p><p>Customers with Cloudflare dashboard access will enjoy higher API limits and faster response times, crucial for agile security operations. Integration with internal workflows becomes seamless, allowing for sophisticated network and user protection strategies.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5xsq5tQ1cjM8cQwnCRUCmh/f6f3a929b008c706765db6a22e5abde7/image2-24.png" />
            
            </figure><p><i>Security Center in the Cloudflare Dashboard</i></p>
    <div>
      <h2>Unlocking the potential of the URL Scanner API</h2>
      <a href="#unlocking-the-potential-of-the-url-scanner-api">
        
      </a>
    </div>
    <p>The <a href="https://developers.cloudflare.com/radar/investigate/url-scanner/">URL Scanner API</a> is a powerful asset for developers, enabling custom scans to detect <a href="https://www.cloudflare.com/learning/access-management/phishing-attack/">phishing</a> or <a href="https://www.cloudflare.com/learning/ddos/glossary/malware/">malware</a> risks, analyze website technologies, and much more. With new features like custom HTTP headers and multi-device screenshots, developers gain a comprehensive toolkit for thorough website assessment.</p>
    <div>
      <h3>Submitting a scan request</h3>
      <a href="#submitting-a-scan-request">
        
      </a>
    </div>
    <p>Using the API, here’s the simplest way to <a href="https://developers.cloudflare.com/api/operations/urlscanner-create-scan">submit</a> a scan request:</p>
            <pre><code>curl --request POST \
	--url https://api.cloudflare.com/client/v4/accounts/&lt;accountId&gt;/urlscanner/scan \
	--header 'Content-Type: application/json' \
--header "Authorization: Bearer &lt;API_TOKEN&gt;" \
	--data '{
		"url": "https://www.cloudflare.com",
	}'</code></pre>
            <p>New features include the option to set custom HTTP headers, like <a href="https://developer.mozilla.org/en-US/docs/Glossary/User_agent">User-Agent</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization">Authorization</a>, request multiple target device screenshots, like mobile and desktop, as well as set the visibility level to “unlisted”. This essentially marks the scan as private and was often requested by developers who wanted to keep their investigations confidential. Public scans, on the other hand, can be found by anyone through search and are useful to share results with the wider community. You can find more details in our <a href="https://developers.cloudflare.com/radar/investigate/url-scanner/">developer documentation</a>.</p>
    <div>
      <h3>Exploring the scan results</h3>
      <a href="#exploring-the-scan-results">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2NRMloVOilGBXsYy12xeeT/a43d66e1b6cd00bd5fdf2bd18ede1256/image5-16.png" />
            
            </figure><p><i>Scan results for</i> <a href="http://www.cloudflare.com"><i>www.cloudflare.com</i></a> <i>on Cloudflare Radar</i></p><p>Once a scan concludes, fetch the final <a href="https://developers.cloudflare.com/api/operations/urlscanner-get-scan">report</a> and the full <a href="https://developers.cloudflare.com/api/operations/urlscanner-get-scan-har">network log</a>. Recently added features include the `verdict` property, indicating the site’s malicious status, and the `securityViolations` section detailing <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP">CSP</a> or <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity">SRI</a> policy breaches — as a developer, you can also scan your own website and see our recommendations. Expect improvements on verdict accuracy over time, as this is an area we’re focusing on.</p>
    <div>
      <h3>Enhanced search functionality</h3>
      <a href="#enhanced-search-functionality">
        
      </a>
    </div>
    <p>Developers can now <a href="https://developers.cloudflare.com/api/operations/urlscanner-search-scans">search</a> scans by hostname, a specific URL or even <i>any</i> URL the page connected to during the scan. This allows, for example, to search for websites that use a JavaScript library named jquery.min.js (‘?path=jquery.min.js’). Future plans include additional features like searching by IP address, <a href="https://www.cloudflare.com/learning/network-layer/what-is-an-autonomous-system/">ASN</a>, and malicious website categorisation.</p><p>The URL Scanner can be used for a diverse range of applications. These include capturing a website's evolving state over time (such as tracking changes to the front page of an online newspaper), analyzing technologies employed by a website, preemptively assessing potential risks (as when scrutinizing shortened URLs), and supporting the investigation of persistent cybersecurity threats (such as identifying affected websites hosting a malicious JavaScript file).</p>
    <div>
      <h2>How we built the URL Scanner API</h2>
      <a href="#how-we-built-the-url-scanner-api">
        
      </a>
    </div>
    <p>In recounting the process of developing the URL Scanner, we aim to showcase the potential and versatility of Cloudflare Workers as a platform. This story is more than a technical journey, but a testament to the capabilities inherent in our platform's suite of APIs. By dogfooding our own technology, we not only demonstrate confidence in its robustness but also encourage developers to harness the same capabilities for building sophisticated applications. The URL Scanner exemplifies how Cloudflare Workers, Durable Objects, and the Browser Rendering API seamlessly integrate.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/55HCrSeFuu3FUjcjjIXJyl/53c0ed5a74a3ca5052972fa191bd679b/image4-23.png" />
            
            </figure><p><i>High level overview of the Cloudflare URL Scanner technology stack</i></p><p>As seen above, Cloudflare’s runtime infrastructure is the foundation the system runs on. <a href="https://developers.cloudflare.com/workers/">Cloudflare Workers</a> serves the public API, <a href="https://developers.cloudflare.com/workers/runtime-apis/durable-objects/">Durable Objects</a> handles orchestration, <a href="https://developers.cloudflare.com/r2/">R2</a> acts as the primary storage solution, and <a href="https://developers.cloudflare.com/queues/">Queues</a> efficiently handles batch operations, all at the edge. However, what truly enables the URL Scanner’s capabilities is the <a href="https://developers.cloudflare.com/browser-rendering/">Browser Rendering API</a>. It’s what initially allowed us to release in such a short time frame, since we didn’t have to build and manage an entire fleet of Chrome browsers from scratch. We simply request a browser, and then using the well known <a href="https://pptr.dev/">Puppeteer</a> library, instruct it to fetch the webpage and process it in the way we want. This API is at the heart of the entire system.</p>
    <div>
      <h3>Scanning a website</h3>
      <a href="#scanning-a-website">
        
      </a>
    </div>
    <p>The entire process of scanning a website, can be split into 4 phases:</p><ol><li><p>Queue a scan</p></li><li><p>Browse to the website and compile initial report</p></li><li><p>Post-process: compile additional information and build final report</p></li><li><p>Store final report, ready for serving and searching</p></li></ol>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5AUAfO5VBEUvbRlYwoJ5zL/4da6566b0dff56dca49e14fc500cc427/image1-28.png" />
            
            </figure><p>In short, we create a Durable Object, the Scanner, unique to each scan, which is responsible for orchestrating the scan from start to finish. Since we want to respond immediately to the user, we save the scan to the Durable Object’s transactional Key-Value storage, and schedule an alarm so we can perform the scan asynchronously a second later.  We then respond to the user, informing them that the scan request was accepted.</p><p>When the Scanner’s alarm triggers, we enter the second phase:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4qnzMmDQbPtWmyIClv6680/4ff2ee5c2a36b78a9d5e2d7f6d3a134a/image7-5.png" />
            
            </figure><p>There are 3 components at work in this phase, the Scanner, the Browser Pool and the Browser Controller, all <a href="https://developers.cloudflare.com/workers/runtime-apis/durable-objects/">Durable Objects</a>.</p><p>In the initial release, for each new scan we would launch a brand-new browser. However, This operation would take time and was inefficient, so after review, we decided to reuse browsers across multiple scans. This is why we introduced both the Browser Pool and the Browser Controller components. The Browser Pool keeps track of what browsers we have open, when they last pinged the browser pool (so it knows they’re alive), and whether they’re free to accept a new scan. The Browser Controller is responsible for keeping the browser instance alive, once it’s launched, and orchestrating (ahem, <a href="http://pptr.dev">puppeteering</a>) the entire browsing session. Here’s a simplified version of our Browser Controller code:</p>
            <pre><code>export class BrowserController implements DurableObject {
	//[..]
	private async handleNewScan(url: string) {
		if (!this.browser) {
			// Launch browser: 1st request to durable object
			this.browser = await puppeteer.launch(this.env.BROWSER)
			await this.state.storage.setAlarm(Date.now() + 5 * 1000)
		}
		// Open new page and navigate to url
		const page = await this.browser.newPage()
		await page.goto(url, { waitUntil: 'networkidle2', timeout: 5000, })

		// Capture DOM
		const dom = await page.content()

		// Clean up
		await page.close()

		return {
			dom: dom,
		}
	}

	async alarm() {
		if (!this.browser) {
			return
		}
		await this.browser.version() // stop websocket connection to Chrome from going idle
		
		// ping browser pool, let it know we're alive
		
		// Keep durable object alive
		await this.state.storage.setAlarm(Date.now() + 5 * 1000)
	}
}</code></pre>
            <p>Launching a browser (Step 6) and maintaining a connection to it is abstracted away from us thanks to the <a href="/browser-rendering-open-beta/">Browser Rendering API</a>. This API is responsible for all the infrastructure required to maintain a fleet of Chrome browsers, and led to a much quicker development and release of the URL Scanner. It also allowed us to use a well-known library, <a href="https://pptr.dev/">Puppeteer</a>, to communicate with Google Chrome via the <a href="https://chromedevtools.github.io/devtools-protocol/">DevTools</a> protocol.</p><p>The initial report is made up of the network log of all requests, captured in <a href="https://en.wikipedia.org/wiki/HAR_(file_format)">HAR</a> (HTTP Archive) format. HAR files, essentially JSON files, provide a detailed record of all interactions between a web browser and a website. As an established standard in the industry, HAR files can be easily <a href="https://developers.cloudflare.com/api/operations/urlscanner-get-scan-har">shared</a> and analyzed using specialized <a href="https://toolbox.googleapps.com/apps/har_analyzer/">tools</a>. In addition to this network log, we augment our dataset with an array of other metadata, including base64-encoded screenshots which provide a snapshot of the website at the moment of the scan.</p><p>Having this data, we transition to phase 3, where the Scanner Durable Object initiates a series of interactions with a few other Cloudflare APIs in order to collect additional information, like running a phishing scanner over the web page's Document Object Model (DOM), fetching <a href="https://www.cloudflare.com/learning/dns/dns-records/">DNS records</a>, and extracting information about <a href="https://developers.cloudflare.com/api/operations/domain-intelligence-get-domain-details">categories</a> and <a href="https://developers.cloudflare.com/api/operations/radar-get-ranking-domain-details">Radar rank</a> associated with the main hostname.</p><p>This process ensures that the final report is enriched with insights coming from different sources, making the URL Scanner more efficient in assessing websites. Once all the necessary information is collected, we compile the final report and store it as a JSON file within <a href="https://developers.cloudflare.com/r2">R2</a>, Cloudflare’s <a href="https://www.cloudflare.com/developer-platform/products/r2/">object storage solution</a>. To empower users with efficient scan searches, we use Postgres.</p><p>While the initial approach involved sending each completed scan promptly to the core API for immediate storage in Postgres, we realized that, as the rate of scans grew, a more efficient strategy would be to batch those operations, and for that, we use Worker Queues:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1gyX0lHVmgVGhmYZeyipcM/93933f31d4dd0905fef9d7cc234a1528/image6-8.png" />
            
            </figure><p>This allows us to better manage the write load on Postgres. We wanted scans available as soon as possible to those who requested them, but it’s ok if they’re only available in search results at a slightly later point in time (seconds to minutes, depending on load).</p><p>In short, <a href="https://developers.cloudflare.com/workers/runtime-apis/durable-objects/">Durable Objects</a> together with the <a href="/browser-rendering-open-beta/">Browser Rendering API</a> power the entire scanning process. Once that’s finished, the Cloudflare Worker serving the API will simply fetch it from <a href="https://developers.cloudflare.com/r2/">R2</a> by ID. All together, Workers, Durable Objects, and R2 scale seamlessly and will allow us to grow as demand evolves.</p>
    <div>
      <h3>Last but not least</h3>
      <a href="#last-but-not-least">
        
      </a>
    </div>
    <p>While we've extensively covered the URL scanning workflow, we've yet to delve into the construction of the API worker itself. Developed with <a href="https://www.typescriptlang.org/">Typescript</a>, it uses <a href="https://github.com/cloudflare/itty-router-openapi">itty-router-openapi</a>, a Javascript router with <a href="https://spec.openapis.org/oas/v3.1.0">Open API 3</a> schema generation and validation, originally built for <a href="https://radar.cloudflare.com/">Radar</a>, but that’s been improving ever since with contributions from the community. Here’s a quick example of how to set up an endpoint, with input validation built in:</p>
            <pre><code>import { DateOnly, OpenAPIRoute, Path, Str, OpenAPIRouter } from '@cloudflare/itty-router-openapi'

import { z } from 'zod'
import { OpenAPIRoute, OpenAPIRouter, Uuid } from '@cloudflare/itty-router-openapi'

export class ScanMetadataCreate extends OpenAPIRoute {
  static schema = {
    tags: ['Scans'],
    summary: 'Create Scan metadata',
    requestBody: {
      scan_id: Uuid,
      url: z.string().url(),
      destination_ip: z.string().ip(),
      timestamp: z.string().datetime(),
      console_logs: [z.string()],
    },
  }

  async handle(
    request: Request,
    env: any,
    context: any,
    data: any,
  ) {
    // Retrieve validated scan
    const newScanMetadata = data.body

    // Insert the scan

    // Return scan as json
    return newScanMetadata
  }
}


const router = OpenAPIRouter()
router.post('/scan/metadata/', ScanMetadataCreate)

// 404 for everything else
router.all('*', () =&gt; new Response('Not Found.', { status: 404 }))

export default {
  fetch: router.handle,
}</code></pre>
            <p>In the example above, the ScanMetadataCreate endpoint will make sure to validate the incoming POST data to match the defined schema before calling the ‘async handle(request,env,context,data)’ function. This way you can be sure that if your code is called, the data argument will always be validated and formatted.</p><p>You can learn more about the project on its <a href="https://github.com/cloudflare/itty-router-openapi">GitHub page</a>.</p>
    <div>
      <h2>Future plans and new features</h2>
      <a href="#future-plans-and-new-features">
        
      </a>
    </div>
    <p>Looking ahead, we're committed to further elevating the URL Scanner's capabilities. Key upcoming features include geographic scans, where users can customize the location that the scan is done from, providing critical insights into regional security threats and content compliance; expanded scan details, including more comprehensive headers and security details; and continuous performance improvements and optimisations, so we can deliver faster scan results.</p><p>The evolution of the URL Scanner is a reflection of our commitment to Internet safety and innovation. Whether you're a developer, a security professional, or simply invested in the safety of the digital landscape, the URL Scanner API offers a comprehensive suite of tools to enhance your efforts. Explore the new features today, and join us in shaping a safer Internet for everyone.</p><p>Remember, while Security Center's new capabilities offer advanced tools for URL Scanning for Cloudflare’s existing customers, the URL Scanner remains accessible for basic scans to the public on <a href="https://radar.cloudflare.com/scan">Cloudflare Radar</a>, ensuring our technology benefits a broad audience.</p><p>If you’re considering a new career direction, check out <a href="https://cloudflare.com/careers">our open positions</a>. We’re looking for individuals who want to help make the Internet better; learn more about our mission <a href="https://www.cloudflare.com/learning/what-is-cloudflare/">here</a>.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[URL Scanner]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API]]></category>
            <guid isPermaLink="false">1JMMDhLvjentdgwo5df7bC</guid>
            <dc:creator>Sofia Cardita</dc:creator>
            <dc:creator>Alexandra Moraru</dc:creator>
        </item>
        <item>
            <title><![CDATA[How we built it: the technology behind Cloudflare Radar 2.0]]></title>
            <link>https://blog.cloudflare.com/technology-behind-radar2/</link>
            <pubDate>Thu, 17 Nov 2022 14:00:00 GMT</pubDate>
            <description><![CDATA[ Radar 2.0 was launched last month during Cloudflare's Birthday Week as a complete product revamp. This blog explains how we built it technically. Hopefully, it will inspire other developers to build complex web apps using Cloudflare products. ]]></description>
            <content:encoded><![CDATA[ 
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1Tbyq3gfFHHRXwc4Uny8RH/a7d2558532a5b33ce1ffa285c950afb2/image11-1.png" />
            
            </figure><p><a href="/radar2/">Radar 2.0</a> was built on the learnings of Radar 1.0 and was launched last month during Cloudflare's Birthday Week as a complete product revamp. We wanted to make it easier for our users to find insights and navigate our data, and overall provide a better and faster user experience.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/34b5YuwtsM5h8WwqSABuXw/dc314ea8e1a3a6b8db68bae7010e64ed/image16.png" />
            
            </figure><p>We're building a <a href="/welcome-to-the-supercloud-and-developer-week-2022/">Supercloud</a>. Cloudflare's products now include hundreds of features in networking, security, access controls, computing, storage, and more.</p><p>This blog will explain how we built the new Radar from an engineering perspective. We wanted to do this to demonstrate that anyone could build a somewhat complex website that involves demanding requirements and multiple architectural layers, do it on top of our stack, and how easy it can be.</p><p>Hopefully, this will inspire other developers to switch from traditional software architectures and build their applications using modern, more efficient technologies.</p>
    <div>
      <h2>High level architecture</h2>
      <a href="#high-level-architecture">
        
      </a>
    </div>
    <p>The following diagram is a birds-eye view of the Radar 2.0 architecture. As you can see, it's divided into three main layers:</p><ul><li><p>The Core layer is where we keep our data lake, data exploration tools, and backend API.</p></li><li><p>The Cloudflare network layer is where we host and run Radar and serve the public APIs.</p></li><li><p>The Client layer is essentially everything else that runs in your browser. We call it the Radar Web app.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7eBe8tSbh0Uocpgw1abbZ8/5b30a247f945240f2f9254f16c0a021a/image3-31.png" />
            
            </figure><p>As you can see, there are Cloudflare products <i>everywhere</i>. They provide the foundational resources to host and securely run our code at scale, but also other building blocks necessary to run the application end to end.</p><p>By having these features readily available and tightly integrated into our ecosystem and tools, at the distance of a click and a few lines of code, engineering teams don't have to reinvent the wheel constantly and can use their time on what is essential: their app logic.</p><p>Let's dig in.</p>
    <div>
      <h2>Cloudflare Pages</h2>
      <a href="#cloudflare-pages">
        
      </a>
    </div>
    <p>Radar 2.0 is deployed using <a href="https://pages.cloudflare.com/">Cloudflare Pages</a>, our <a href="https://www.cloudflare.com/developer-platform/solutions/hosting/">developer-focused website hosting platform</a>. In the early days, you could only host static assets on Pages, which was helpful for many use cases, including integrating with static site generators like <a href="https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/">Hugo</a>, <a href="https://developers.cloudflare.com/pages/framework-guides/deploy-a-jekyll-site/">Jekyll</a>, or <a href="https://developers.cloudflare.com/pages/framework-guides/deploy-a-gatsby-site/">Gatsby</a>. Still, it wouldn't solve situations where your application needs some sort of server-side computing or advanced logic using a single deployment.</p><p>Luckily Pages recently added support to run custom Workers scripts. With <a href="https://developers.cloudflare.com/pages/platform/functions/">Functions</a>, you can now run server-side code and enable any kind of dynamic functionality you'd typically implement using a separate Worker.</p><p>Cloudflare Pages Functions also allow you to use <a href="https://developers.cloudflare.com/workers/learning/using-durable-objects/">Durable Objects</a>, <a href="https://developers.cloudflare.com/workers/runtime-apis/kv/">KV</a>, <a href="https://developers.cloudflare.com/r2/">R2</a>, or <a href="https://developers.cloudflare.com/d1">D1</a>, just like a regular Worker would. We provide <a href="https://developers.cloudflare.com/pages/platform/functions/">excellent documentation</a> on how to do this and more in our Developer Documentation. Furthermore, the team wrote a blog on <a href="/building-full-stack-with-pages/">how to build a full-stack application</a> that describes all the steps in detail.</p><p>Radar 2.0 needs server-side functions for two reasons:</p><ul><li><p>To render Radar and run the server side of Remix.</p></li><li><p>To implement and serve our frontend API.</p></li></ul>
    <div>
      <h2>Remix and Server-side Rendering</h2>
      <a href="#remix-and-server-side-rendering">
        
      </a>
    </div>
    <p>We use Remix with Cloudflare Pages on Radar 2.0.</p><p><a href="https://remix.run/">Remix</a> follows a server/client model and works under the premise that you can't control the user's network, so web apps must reduce the amount of Javascript, CSS, and JSON they send through the wire. To do this, they move some of the logic to the server.</p><p>In this case, the client browser will get pre-rendered DOM components and the result of pre-fetched API calls with just the right amount of JSON, Javascript, and CSS code, rightfully adjusted to the UI needs. Here’s the <a href="https://remix.run/docs/en/v1/pages/technical-explanation">technical explanation</a> with more detail.</p><p>Typically, Remix would need a Node.js server to do all of this, but guess what: <a href="https://developers.cloudflare.com/pages/framework-guides/remix/">It can also run</a> on Cloudflare Workers and Pages.</p><p>Here’s the code to get the Remix server running on Workers, using Cloudflare Pages:</p>
            <pre><code>import { createPagesFunctionHandler } from "@remix-run/cloudflare-pages";
import * as build from "@remix-run/dev/server-build";

const handleRequest = createPagesFunctionHandler({
  build: {
    ...build,
    publicPath: "/build/",
    assetsBuildDirectory: "public/build",
  },
  mode: process.env.NODE_ENV,
  getLoadContext: (context) =&gt; ({
    ...context.env,
    CF: (context.request as any).cf as IncomingRequestCfProperties | undefined,
  }),
});

const handler: ExportedHandler&lt;Env&gt; = {
  fetch: async (req, env, ctx) =&gt; {
    const r = new Request(req);
    return handleRequest({
      env,
      params: {},
      request: r,
      waitUntil: ctx.waitUntil,
      next: () =&gt; {
        throw new Error("next() called in Worker");
      },
      functionPath: "",
      data: undefined,
    });
  },
};</code></pre>
            <p>In Remix, <a href="https://remix.run/docs/en/v1/guides/api-routes">routes</a> handle changes when a user interacts with the app and changes it (clicking on a menu option, for example). A Remix route can have a <a href="https://remix.run/docs/en/v1/guides/data-loading"><i>loader</i></a>, an <a href="https://remix.run/docs/en/v1/guides/data-writes"><i>action</i></a> and a <a href="https://remix.run/docs/en/v1/api/conventions#root-layout-route"><i>default</i></a> export. The <i>loader</i> handles API calls for fetching data (GET method). The <i>action</i> handles submissions to the server (POST, PUT, PATCH, DELETE methods) and returns the response. The <i>default</i> export handles the UI code in React that’s returned for that route. A route without a <i>default</i> export returns only data.</p><p>Because Remix runs both on the server and the client, it can get smart and know what can be pre-fetched and computed server-side and what must go through the network connection, optimizing everything for performance and responsiveness.</p><p>Here’s an example of a Radar route, simplified for readability, for the <a href="https://radar.cloudflare.com/outage-center">Outage Center</a> page.</p>
            <pre><code>import type { MetaFunction } from "@remix-run/cloudflare";
import { useLoaderData } from "@remix-run/react";
import { type LoaderArgs } from "@remix-run/server-runtime";

export async function loader(args: LoaderArgs) {
  const ssr = await initialFetch(SSR_CHARTS, args);
  return { ssr, };
}

export default function Outages() {
  const { ssr } = useLoaderData&lt;typeof loader&gt;();

  return (
    &lt;Page
      filters={["timerange"]}
      title={
        &lt;&gt;
          &lt;Svg use="icon-outages" /&gt;
          {t("nav.main.outage-center")}
        &lt;/&gt;
      }
    &gt;
      &lt;Grid columns={[1, 1, 1, 1]}&gt;
        &lt;Card.Article colspan={[1, 1, 1, 1]} rowspan={[1, 1, 1, 1]}&gt;
          &lt;Card.Section&gt;
            &lt;Components.InternetOutagesChoropleth ssr={ssr} /&gt;
          &lt;/Card.Section&gt;
          &lt;Divider /&gt;
          &lt;Card.Section&gt;
            &lt;Components.InternetOutagesTable ssr={ssr} /&gt;
          &lt;/Card.Section&gt;
        &lt;/Card.Article&gt;
      &lt;/Grid&gt;
    &lt;/Page&gt;
  );
}</code></pre>
            <p>And here’s what it produces:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7wmqtv1VV0kSOU3UTlwXiz/fcbaf883e8f975e679069737e6750251/image18.png" />
            
            </figure><p>Remix and SSR can also help you with your <a href="https://developer.chrome.com/docs/lighthouse/overview/">Lighthouse</a> scores and SEO. It can drastically improve metrics like <a href="https://web.dev/cls/">Cumulative Layout Shift</a>, <a href="https://web.dev/fcp/">First Contentful Paint</a> and <a href="https://web.dev/lcp/">Largest Contentful Paint</a> by reducing the number of fetches and information traveling from the server to the browser and pre-rendering the DOM.</p><p>Another project porting their app to Remix is <a href="https://cloudflare.tv/">Cloudflare TV</a>. This is how their metrics looked before and after the changes.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/oR1Rqf8Mp1fYJRpQMBrgE/aa49405daef020536bfe82c22e42c5d1/image12.png" />
            
            </figure><p>Radar’s Desktop Lighthouse score is now nearly 100% on Performance, Accessibility, Best Practices, and SEO.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3fe4weO7U21a7ZNGW969su/e5c4250fe87be0cfa8bd6f879a721e03/image14.png" />
            
            </figure><p>Another Cloudflare product that we use extensively on Radar 2.0 is <a href="https://www.cloudflare.com/website-optimization/">Speed</a>. In particular, we want to mention the <a href="/early-hints/">Early Hints</a> feature. Early Hints is a new web <a href="https://developer.mozilla.org/docs/Web/HTTP/Status/103">standard</a> that defines a new HTTP 103 header the server can use to inform the browser which assets will likely be needed to render the web page while it's still being requested, resulting in dramatic load times improvements.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2OSrsfjFevZ4qx1TT4jYWb/a012f0b129b260e0f75a62742e9d9df4/image2-42.png" />
            
            </figure><p>You can use <a href="/early-hints-on-cloudflare-pages/">Cloudflare Pages with Early Hints</a>.</p>
    <div>
      <h2>APIs</h2>
      <a href="#apis">
        
      </a>
    </div>
    <p>Radar has two APIs. The backend which has direct access to our data sources, and the frontend, which is available on the Internet.</p>
    <div>
      <h3>Backend API</h3>
      <a href="#backend-api">
        
      </a>
    </div>
    <p>The backend API was written using <a href="https://www.python.org/">Python</a>, <a href="https://pandas.pydata.org/">Pandas</a> and <a href="https://fastapi.tiangolo.com/">FastAPI</a> and is protected by <a href="https://developers.cloudflare.com/cloudflare-one/policies/access/">Cloudflare Access</a>, <a href="https://developers.cloudflare.com/cloudflare-one/identity/authorization-cookie/validating-json/">JWT tokens</a> and an <a href="https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/set-up/">authenticated origin pull</a> (AOP) configuration. Using Python allows anyone on the team, engineers or data scientists, to collaborate easily and contribute to improving and expanding the API, which is great. Our data science team uses <a href="https://jupyter.org/hub">JupyterHub</a> and <a href="https://docs.jupyter.org/en/latest/start/index.html">Jupyter Notebooks</a> as part of their data exploration workflows, which makes prototyping and reusing code, algorithms and models particularly easy and fast.</p><p>It then talks to the upstream frontend API via a <a href="https://strawberry.rocks/">Strawberry</a> based GraphQL server. Using <a href="https://graphql.org/">GraphQL</a> makes it easy to create complex queries, giving internal users and analysts the flexibility they need when building reports from our vast collection of data.</p>
    <div>
      <h3>Frontend API</h3>
      <a href="#frontend-api">
        
      </a>
    </div>
    <p>We built Radar's frontend API on top of Cloudflare <a href="https://developers.cloudflare.com/workers/">Workers</a>. This worker has two main functions:</p><ul><li><p>It fetches data from the backend API using GraphQL, and then transforms it.</p></li><li><p>It provides a public <a href="https://developers.cloudflare.com/radar">REST API</a> that anyone can use, including Radar.</p></li></ul><p>Using a worker in front of our core API allows us to easily add and separate microservices, and also adds notable features like:</p><ul><li><p>Cloudflare's <a href="https://developers.cloudflare.com/workers/runtime-apis/cache/">Cache API</a> allows finer control over what to cache and for how long and supports POST requests and customizable cache control headers, which we use.</p></li><li><p>Stale responses using <a href="https://developers.cloudflare.com/r2/">R2</a>. When the backend API cannot serve a request for some reason, and there’s a stale response cached, it’ll be served directly from R2, giving end users a better experience.</p></li><li><p><a href="https://en.wikipedia.org/wiki/Comma-separated_values">CSV</a> and <a href="https://en.wikipedia.org/wiki/JSON">JSON</a> output formats. The CSV format is convenient and makes it easier for data scientists, analysts, and others to use the API and consume our API data directly from other tools.</p></li></ul>
    <div>
      <h3>Open sourcing our OpenAPI 3 schema generator and validator</h3>
      <a href="#open-sourcing-our-openapi-3-schema-generator-and-validator">
        
      </a>
    </div>
    <p>One last feature on the frontend API is <a href="https://spec.openapis.org/oas/latest.html">OpenAPI 3</a> support. We automatically generate an OpenAPI schema and validate user input with it. This is done through a custom library that we built on top of <a href="https://github.com/kwhitley/itty-router">itty-router</a>, which we also use. Today we’re open sourcing this work.</p><p><a href="https://github.com/cloudflare/itty-router-openapi">itty-router-openapi</a> provides an easy and compact OpenAPI 3 schema generator and validator for Cloudflare Workers. Check our <a href="https://github.com/cloudflare/itty-router-openapi">GitHub repository</a> for more information and details on how to use it.</p>
    <div>
      <h3>Developer’s Documentation</h3>
      <a href="#developers-documentation">
        
      </a>
    </div>
    <p>Today we’re also launching our developer’s <a href="https://developers.cloudflare.com/radar">documentation pages for the Radar API</a> where you can find more information about our data license, basic concepts, how to get started and the available API methods. Cloudflare Radar's API is free, allowing academics, data sleuths and other web enthusiasts to investigate Internet usage across the globe, based on data from our global network.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1GbwacvF3M7mVj6kovY0x3/c9e8c3f3b7d2ef7b364f6740bfec2760/image6-7.png" />
            
            </figure><p>To facilitate using our API, we also put together a <a href="https://colab.research.google.com/github/cloudflare/radar-notebooks/blob/main/notebooks/example.ipynb">Colab Notebook template</a> that you can play with, copy and expand to your use case.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5IQocyWiVv1U9ecurP6AOg/1f6336488129f9f3ae6e804d15526d39/image7-4.png" />
            
            </figure>
    <div>
      <h2>The Radar App</h2>
      <a href="#the-radar-app">
        
      </a>
    </div>
    <p>The Radar App is the code that runs in your browser. We've talked about Remix, but what else do we use?</p><p>Radar relies on a lot of <b>data visualizations</b>. Things like charts and maps are essential to us. We decided to build our reusable library of visualization components on top of two other frameworks: <a href="https://airbnb.io/visx/">visx</a>, a "collection of expressive, low-level visualization primitives for React," <a href="https://d3js.org/">D3</a>, a powerful JavaScript library for manipulating the DOM based on data, and <a href="https://maplibre.org/">MapLibre</a>, an open-source map visualization stack.</p><p>Here’s one of our visualization components in action. We call it the “PewPew map”.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1ENMTCsc23Vq5Of80vVqBP/fd8b4bab134c536c73f34c9ced3db670/image5-12.png" />
            
            </figure><p>And here’s the Remix React code for it, whenever we need to use it in a page:</p>
            <pre><code>&lt;Card.Section
    title={t("card.attacks.title")}
    description={t("card.attacks.description")}
  &gt;
    &lt;Flex gap={spacing.medium} align="center" justify="flex-end"&gt;
      &lt;SegmentedControl
        label="Sort order:"
        name="attacksDirection"
        value={attacksDirection}
        options={[
          { label: t("common.source"), value: "ORIGIN" },
          { label: t("common.target"), value: "TARGET" },
        ]}
      onChange={({ target }: any) =&gt; setAttacksDirection(target.value)}
      /&gt;
    &lt;/Flex&gt;

    &lt;Components.AttacksCombinedChart
      ssr={ssr}
      height={400}
      direction={attacksDirection}
    /&gt;
  &lt;/Card.Section&gt;</code></pre>
            
    <div>
      <h3>SVGs</h3>
      <a href="#svgs">
        
      </a>
    </div>
    <p>Another change we made to Radar was switching our images and graphical assets to <a href="https://en.wikipedia.org/wiki/Scalable_Vector_Graphics">Scalable Vector Graphics</a>. SVGs are great because they're essentially a declarative graphics language. They're XML text files with vectorial information. And so, they can be easily manipulated, transformed, stored, or indexed, and of course, they can be rendered at any size, producing beautiful, crisp results on any device and resolution.</p><p>SVGs are also extremely small and efficient in size compared to bitmap formats and support <a href="https://www.w3.org/TR/SVGTiny12/i18n.html">internationalization</a>, making them easier to translate to other languages (localization), thus providing better <a href="https://www.a11yproject.com/">accessibility</a>.</p><p>Here’s an example of a Radar Bubble Chart, inspected, where you can see the SVG code and the  strings embedded.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1PJgCboffVUKXDjtRTPFov/b07a3c91bc2e3ad91bbfb150ace899bc/image17.png" />
            
            </figure>
    <div>
      <h3>Cosmos</h3>
      <a href="#cosmos">
        
      </a>
    </div>
    <p><a href="https://reactcosmos.org/">React Cosmos</a> is a "sandbox for developing and testing UI components in isolation." We wanted to use Cosmos with Radar 2.0 because it's the perfect project for it:</p><ol><li><p>It has a lot of visual components; some are complex and have many configuration options and features.</p></li><li><p>The components are highly reusable across multiple pages in different contexts with different data.</p></li><li><p>We have a multidisciplinary team; everyone can send a pull request and add or change code in the frontend.</p></li></ol><p>Cosmos acts as a component library where you can see our palette of ready-to-use visualizations and widgets, from simple buttons to complex charts, and you play with their options in real-time and see what happens. Anyone can do it, not only designers or engineers but also other project stakeholders. This effectively improves team communications and makes contributing and iterating quickly.</p><p>Here’s a screenshot of our Cosmos in action:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5LBKvrUOyalqcEkuie59dB/c571741695acf093204103d94ce6ebd5/image1-57.png" />
            
            </figure>
    <div>
      <h2>Continuous integration and development</h2>
      <a href="#continuous-integration-and-development">
        
      </a>
    </div>
    <p>Continuous integration is important for any team doing modern software. Cloudflare Pages provides multiple options to work with CI tools using direct uploads, out of the box. The team has put up <a href="https://developers.cloudflare.com/pages/how-to/use-direct-upload-with-continuous-integration/">documentation and examples</a> on how to do that with GitHub Actions, CircleCI, and Travis, but you can use others.</p><p>In our case, we use BitBucket and TeamCity internally to build and deploy our releases. Our workflow automatically builds, tests, and deploys Radar 2.0 within minutes on an approved PR and follow-up merge.</p><p>Unit tests are done with <a href="https://vitest.dev/">Vitest</a> and E2E tests with <a href="https://playwright.dev/">Playwright</a>. Visual Regression testing is planned and <a href="https://playwright.dev/docs/test-snapshots">Playwright can also help with that</a>.</p><p>Furthermore, we have multiple environments to stage and test our releases before they go live to production. Our <a href="https://www.cloudflare.com/learning/serverless/glossary/what-is-ci-cd/">CI/CD</a> setup makes it easy to switch from one environment to the other or quickly roll back any undesired deployment.</p><p>Again Cloudflare Pages makes it easy to do this using <a href="https://developers.cloudflare.com/pages/platform/preview-deployments/">Preview deployments</a>, aliases, or <a href="https://developers.cloudflare.com/pages/platform/branch-build-controls/">Branch build controls</a>. The same is true for regular Workers using <a href="https://developers.cloudflare.com/workers/platform/environments/">Environments</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2Q9hXo3Iz04CtXpmaALbzI/0c40d53fd560b42f08098a00d00157e5/image19.png" />
            
            </figure>
    <div>
      <h3>Fast previews and notifications</h3>
      <a href="#fast-previews-and-notifications">
        
      </a>
    </div>
    <p>Radar 1.0 wasn't particularly fast doing CI/CD, we confess. We had a few episodes when a quick fix could take some good 30 minutes from committing the code to deployment, and we felt frustrated about it.</p><p>So we invested a lot in ensuring that the new CI would be fast, efficient, and furious.</p><p>One cool thing we ended up doing was fast preview links on any commit pushed to the code repository. Using a combination of intelligent caching during builds and doing asynchronous tests when the commit is outside the normal release branches, we were able to shorten the deployment time to seconds.</p><p>This is the notification we get in our chat when anyone pushes code to any branch:</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5moqSeGzEAlNHnEJVoxwbO/900325ae89a90528c250ffd3fa4c4e0e/image8-2.png" />
            
            </figure><p>Anyone can follow a thread for a specific branch in the chat and get notified on new changes when they happen.</p><p>Blazing-fast builds, preview links and notifications are game-changers. An engineer can go from an idea or a quick fix to showing the result on a link to a product manager or another team member. Anyone can quickly click the link to see the changes on a fully working end-to-end version of Radar.</p>
    <div>
      <h2>Accessibility and localization</h2>
      <a href="#accessibility-and-localization">
        
      </a>
    </div>
    <p>Cloudflare is committed to web accessibility. Recently we announced how we upgraded Cloudflare’s Dashboard to <a href="/project-a11y/">adhere to industry accessibility standards</a>, but this premise is valid for all our properties. The same is true for localization. In 2020, we <a href="/internationalizing-the-cloudflare-dashboard/">internationalized</a> our Dashboard and added support for new languages and locales.</p><p>Accessibility and localization go hand in hand and are both important, but they are also different. The <a href="https://www.w3.org/TR/WCAG21/">Web Content Accessibility Guidelines</a> define many best practices around accessibility, including using <a href="https://color.cloudflare.design/">color</a> and contrast, tags, SVGs, shortcuts, gestures, and many others. The <a href="https://www.a11yproject.com/">A11Y project page</a> is an excellent resource for learning more.</p><p>Localization, though, also known as <a href="https://en.wikipedia.org/wiki/Internationalization_and_localization">L10n</a>, is more of a technical requirement when you start a new project. It's about making sure you choose the right set of libraries and frameworks that will make it easier to add new translations without engineering dependencies or code rewrites.</p><p>We wanted Radar to perform well on both fronts. Our design system takes Cloudflare's design and brand <a href="https://cloudflare.design/">guidelines</a> seriously and adds as many A11Y good practices as possible, and the app is fully aware of localization strings across its pages and UI components.</p><p>Adding a new language is as easy as translating a single JSON file. Here's a snippet of the en-US.json file with the default American English strings:</p>
            <pre><code>{
  "abbr.asn": "Autonomous System Number",
  "actions.chart.download.csv": "Download chart data in CSV",
  "actions.chart.download.png": "Download chart in PNG Format",
  "actions.chart.download.svg": "Download chart in SVG Format",
  "actions.chart.download": "Download chart",
  "actions.chart.maximize": "Maximize chart",
  "actions.chart.minimize": "Minimize chart",
  "actions.chart.share": "Share chart",
  "actions.download.csv": "Download CSV",
  "actions.download.png": "Download PNG",
  "actions.download.svg": "Download SVG",
  "actions.share": "Share",
  "alert.beta.link": "Radar Classic",
  "alert.beta.message": "Radar 2.0 is currently in Beta. You can still use {link} during the transition period.",
  "card.about.cloudflare.p1": "Cloudflare, Inc. ({website} / {twitter}) is on a mission to help build a better Internet. Cloudflare's suite of products protects and accelerates any Internet application online without adding hardware, installing software, or changing a line of code. Internet properties powered by Cloudflare have all web traffic routed through its intelligent global network, which gets smarter with every request. As a result, they see significant improvement in performance and a decrease in spam and other attacks. Cloudflare was named to Entrepreneur Magazine's Top Company Cultures 2018 list and ranked among the World's Most Innovative Companies by Fast Company in 2019.",
  "card.about.cloudflare.p2": "Headquartered in San Francisco, CA, Cloudflare has offices in Austin, TX, Champaign, IL, New York, NY, San Jose, CA, Seattle, WA, Washington, D.C., Toronto, Dubai, Lisbon, London, Munich, Paris, Beijing, Singapore, Sydney, and Tokyo.",
  "card.about.cloudflare.title": "About Cloudflare",
...</code></pre>
            <p>You can expect us to release Radar in other languages soon.</p>
    <div>
      <h2>Radar Reports and Jupyter notebooks</h2>
      <a href="#radar-reports-and-jupyter-notebooks">
        
      </a>
    </div>
    <p><a href="https://radar.cloudflare.com/reports">Radar Reports</a> are documents that use data exploration and storytelling to analyze a particular theme in-depth. Some reports tend to get updates from time to time. Examples of Radar Reports are our quarterly <a href="https://radar.cloudflare.com/reports/ddos-2022-q3">DDoS Attack Trends</a>, or the <a href="https://radar.cloudflare.com/reports/ipv6">IPv6 adoption</a>.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1YdlIovSNvHy7YITYdxiCf/50804dd483563fd236d7b8ab6f05b8b1/image4-23.png" />
            
            </figure><p>The source of these Reports is <a href="https://jupyter.org/">Jupyter Notebooks</a>. Our Data Science team works on some use-case or themes with other stakeholders using our internal Jupyter Hub tool. After all the iteration and exploration are done, and the work is signed off, a notebook is produced.</p><p>A Jupyter Notebook is a <a href="https://ipython.org/ipython-doc/3/notebook/nbformat.html">JSON document</a> containing text, source code, rich media such as images or charts, and other metadata. It is the de facto standard for presenting data science projects, and every data scientist uses it.</p><p>With Radar 1.0, converting a Jupyter Notebook to a Radar page was a lengthy and manual process implicating many engineering and design resources and causing much frustration to everyone involved. Even updating an already-published notebook would frequently cause trouble for us.</p><p>Radar 2.0 changed all of this. We now have a fully automated process that takes a Jupyter Notebook and, as long as it's designed using a list of simple rules and internal guidelines, converts it automatically, hosts the resulting HTML and assets in an R2 bucket, and publishes it on the <a href="https://radar.cloudflare.com/reports">Reports</a> page.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5iS9T8mn23CDjg4nFfpqWT/efdeaa9d9b3ee645cd21b5014af13da1/image9-2.png" />
            
            </figure><p>The conversion to HTML takes into account our design system and UI components, and the result is a <a href="https://radar.cloudflare.com/reports/ddos-2022-q3">beautiful document</a>, usually long-form, perfectly matching Radar's look and feel.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4oXmxPoDH1NDJqsBaIRKK4/9cdd9229bd835c6722fb06c6350fbf0f/image13.png" />
            
            </figure><p>We will eventually open-source this tool so that anyone can use it.</p>
    <div>
      <h2>More Cloudflare, less to worry about</h2>
      <a href="#more-cloudflare-less-to-worry-about">
        
      </a>
    </div>
    <p>We gave examples of using Cloudflare's products and features to build your next-gen app without worrying too much about things that aren't core to your business or logic. A few are missing, though.</p><p>Once the app is up and running, you must protect it from bad traffic and malicious actors. Cloudflare offers you <a href="https://www.cloudflare.com/ddos/">DDoS</a>, <a href="https://www.cloudflare.com/waf/">WAF</a>, and <a href="https://www.cloudflare.com/products/bot-management/">Bot Management</a> protection out of the box at a click's distance.</p><p>For example, here are some of our security rules. This is traffic we don't have to worry about in our app because Cloudflare detects it and acts on it according to our rules.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/14D17IdfhuHOyzPeFPePyP/faa894184818241d101551d1815bf0d7/image10-1.png" />
            
            </figure><p>Another thing we don't need to worry about is redirects from the old site to the new one. Cloudflare has a feature called <a href="https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/create-dashboard/">Bulk Redirects</a>, where you can easily create redirect lists directly on the dashboard.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3ieVLmpoynt1H7lDWykfs8/ca4136845ea8fa4f66166a3be7fa57b5/image15.png" />
            
            </figure><p>It's also important to mention that every time we talk about what you can do using our Dashboard, we're, in fact, also saying you can do precisely the same using <a href="https://api.cloudflare.com/">Cloudflare's APIs</a>. Our Dashboard is built entirely on top of them. And if you're the infrastructure as code kind of person, we have you covered, too; you can use the <a href="https://developers.cloudflare.com/terraform/tutorial/">Cloudflare Terraform provider</a>.</p><p>Deploying and managing Workers, R2 buckets, or Pages sites is obviously scriptable too. <a href="https://github.com/cloudflare/wrangler">Wrangler</a> is the command-line tool to do this and more, and it goes the extra mile to allow you to run your full app <a href="https://developers.cloudflare.com/workers/wrangler/commands/#dev">locally</a>, emulating our stack, on your computer, before deploying.</p>
    <div>
      <h2>Final words</h2>
      <a href="#final-words">
        
      </a>
    </div>
    <p>We hope you enjoyed this Radar team write-up and were inspired to build your next app on top of our <a href="/welcome-to-the-supercloud-and-developer-week-2022/">Supercloud</a>. We will continue improving and innovating on Radar 2.0 with new features, share our findings and open-sourcing our tools with you.</p><p>In the meantime, we opened a <a href="https://discord.gg/cloudflaredev">Radar room</a> on our Developers Discord Server. Feel free to <a href="https://discord.gg/cloudflaredev">join</a> it and ask us questions; the team is eager to receive feedback and discuss web technology with you.</p><p>You can also follow us <a href="https://twitter.com/cloudflareradar">on Twitter</a> for more Radar updates.</p> ]]></content:encoded>
            <category><![CDATA[Developer Week]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Cloudflare Workers]]></category>
            <category><![CDATA[Cloudflare Pages]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <guid isPermaLink="false">2H0o8Ld6ebN4hs7uhm1ELW</guid>
            <dc:creator>Celso Martinho</dc:creator>
            <dc:creator>Nuno Pereira</dc:creator>
            <dc:creator>Sofia Cardita</dc:creator>
            <dc:creator>Gabriel Massadas</dc:creator>
        </item>
        <item>
            <title><![CDATA[Cloudflare Radar’s new ASN pages]]></title>
            <link>https://blog.cloudflare.com/asn-on-radar/</link>
            <pubDate>Thu, 24 Mar 2022 13:32:16 GMT</pubDate>
            <description><![CDATA[ Autonomous Systems (ASes) are a group of routable IP prefixes belonging to a single entity or organization, and is one of the fundamental building blocks of the Internet ]]></description>
            <content:encoded><![CDATA[ <p></p><p>An AS, or Autonomous System, is a group of routable IP prefixes belonging to a single entity, and is one of the key building blocks of the Internet. Internet providers, public clouds, governments, and other organizations have one or more ASes that they use to connect their users or systems to the rest of the Internet by advertising <a href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">how to reach them</a>.</p><p>Per AS traffic statistics and trends help when we need insight into unusual events, like Internet outages, infrastructure anomalies, targeted attacks, or any other changes from service providers.</p><p>Today, we are opening more of our data and launching the Cloudflare Radar pages for Autonomous Systems. When navigating to a country or region page on Cloudflare Radar you will see a list of five selected ASes for that country or region. But you shouldn’t feel limited to those, as you can deep dive into any AS by plugging its ASN (Autonomous System Number) into the Radar URL (for example: <a href="https://radar.cloudflare.com/asn/812">https://radar.cloudflare.com/asn/812</a>). We have excluded some statistical trends from ASes with small amounts of traffic as that data would be difficult to interpret.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/79MSdrP9Fw2qj65GInNbYi/db087bd4b2ddae6371a2bc463042dac4/image2-84.png" />
            
            </figure><p>The AS page is similar to the country page on Cloudflare Radar. You can find traffic levels, protocol use, and security details such as application and network-level DDoS attack information. Additionally, we show a geographical distribution map of the traffic and the volume of BGP announcements we see for the list of prefixes associated with the specific AS.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2U52RWx1h4VvU3iuGUtQHB/e703adbb2d716c9a4c017c565f4b5323/image1-101.png" />
            
            </figure><p>A sudden increase in BGP announcements often suggests disruptive changes to the Internet in the region or institution associated with the AS. Spikes in BGP announcements were visible when the <a href="/tonga-internet-outage/">submarine cable was cut in Tonga in 2022</a>, on the <a href="/october-2021-facebook-outage/">Facebook outage in October 2021</a>, and when governments limited the Internet access in their countries (as seen in <a href="/sudan-woke-up-without-internet/">Sudan</a> and <a href="/syria-exam-related-internet-shutdowns/">Syria</a> in 2021).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2Z74kFvZq0WsiC6xr5c3te/70e553b038bdc866b6436277845fd001/image4-25.png" />
            
            </figure><p>At Cloudflare, we are committed to keep increasing transparency on the inner workings of the Internet, so that we can all do our part in keeping the Internet more open and secure for everyone. Keep an eye on <a href="https://radar.cloudflare.com">Cloudflare Radar</a> for more insights like these.</p> ]]></content:encoded>
            <category><![CDATA[Security Week]]></category>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">1tjSJwE5Re6TLV9wokISGx</guid>
            <dc:creator>Celso Martinho</dc:creator>
            <dc:creator>Sofia Cardita</dc:creator>
            <dc:creator>João Sousa Botto</dc:creator>
        </item>
        <item>
            <title><![CDATA[In 2021, the Internet went for TikTok, space and beyond]]></title>
            <link>https://blog.cloudflare.com/popular-domains-year-in-review-2021/</link>
            <pubDate>Mon, 20 Dec 2021 15:09:08 GMT</pubDate>
            <description><![CDATA[ Join us in our Year in Review 2021 focused on the most popular domains-websites ]]></description>
            <content:encoded><![CDATA[ <p></p><p>The years come and go, Internet traffic continues to grow (at least so far and with some ‘help’ from the <a href="/recent-trends-in-internet-traffic/">pandemic</a>), and Internet applications, be they websites, IoT devices or mobile apps, continue to evolve throughout the year, depending on if they attract human beings.</p><p>We’ll have a more broad Internet traffic-related Year in Review 2021 in the next few days (you can check the <a href="/cloudflare-radar-2020-year-in-review/">2020 one here</a>), but for now, let’s focus on the most popular domains this year according to our data on <a href="https://radar.cloudflare.com/">Cloudflare Radar</a> and those domains’ changes in our popularity ranking. With <a href="https://support.alexa.com/hc/en-us/articles/4410503838999">Alexa.com</a> going away, if you need a domain ranking, you can get it from Cloudflare.</p><p>We’ll focus on space (<b>NASA and SpaceX flew higher</b>), e-commerce (<b>Amazon and Taobao rule</b>), and social media (<b>TikTok ‘danced’ to take the crown from Facebook</b>). We’ll also take a little ‘bite’ on video streaming wars. <b>Netflix is a Squid Game of its own</b> and January 2021 was at the highest in our ranking — probably lockdown and pandemic-related.</p><p>Chat domains (<b>WhatsApp, what else</b>) will also be present and, of course, the less established metaverse domains of sorts (<b>Roblox took the lead from Fortnite late in the game</b>). Come with us, let’s travel through 2021.</p><p>The following will show the way Cloudflare saw Internet traffic focusing on specific domains (some of which have many websites aggregated into them) and their highs and lows in our global popularity ranking.</p>
    <div>
      <h2>Top Sites: Google dethroned by the young ‘padawan’ TikTok</h2>
      <a href="#top-sites-google-dethroned-by-the-young-padawan-tiktok">
        
      </a>
    </div>
    <p>Let’s start with our Top Domains Ranking and 2021 brought us a very interesting duel for the Number 1 spot in our global ranking. Google.com (which includes Maps, Translate, Photos, Flights, Books, and News, among others) ended 2020 as the undefeated leader in our ranking — from September to December of last year it was always on top. Back then TikTok.com was only ranked #7 or #8.</p>
    <div>
      <h3>Top 10 — Most popular domains (late) 2021</h3>
      <a href="#top-10-most-popular-domains-late-2021">
        
      </a>
    </div>
    <p>1 TikTok.com2 Google.com3 Facebook.com4 Microsoft.com5 Apple.com6 Amazon.com7 Netflix.com8 YouTube.com9 Twitter.com10 WhatsApp.com</p>
    <div>
      <h3>Top 10 — Most popular domains (late) 2020</h3>
      <a href="#top-10-most-popular-domains-late-2020">
        
      </a>
    </div>
    <p>1 Google.com2 Facebook.com3 Microsoft.com4 Apple.com5 Netflix.com*6 Amazon.com7 TikTok.com8 YouTube.com9 Instagram.com *10 Twitter.com</p><p><i>Amazon was #5 in November, but Netflix surpassed in December 2020 (on some days it was higher than Apple, in #4); Instagram and Twitter were constantly changing positions throughout November and December.</i></p><p>2021 told a different story. It was on February 17, 2021, that TikTok got the top spot for a day. Back in March, TikTok got a few more days and also in May, but it was after August 10, 2021, that TikTok took the lead on most days. There were some days when Google was #1, but October and November were mostly TikTok’s days, including on Thanksgiving (November 25) and <a href="https://blog.cloudflare.com/the-truth-about-black-friday-and-cyber-monday/">Black Friday</a> (November 26).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5N85dgyjolp0STxK38370C/3afc3b767f3ed00a6f769b96c1199c8e/image5-33.png" />
            
            </figure><p>There are other trends we can see comparing both years — for 2020 we only show data of the end of the year, after September (Cloudflare Radar was <a href="/introducing-cloudflare-radar/">launched</a> that month). For example, Facebook.com was steadily number #2 across 2020, but with TikTok.com going up Facebook is now a solid #3, followed by Microsoft.com (Office365 and Teams numbers are included there) and by Apple.com (App Store and Apple TV+ numbers are included), the same trend as in 2020.</p><p>Amazon.com is the juggernaut that follows, but it is interesting to see that since January 2021 the e-commerce website (we will talk more about that category in a few paragraphs) jumped in front of Apple.com. But Apple got back in front, after September, with some exceptions like November 28, 2021, the day before Cyber Monday — and also December 1 and 6.</p>
    <div>
      <h3>Christmas time, Netflix time</h3>
      <a href="#christmas-time-netflix-time">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2ZkhP40Hgw2mAGcvxq0fel/e687ffe1ee8e8f993c16cb416de3276c/image3-49.png" />
            
            </figure><p><i>Netflix had a great 2020 Christmas but also January 2021, especially at the weekend</i></p><p>Another trend is that Netflix surpassed Amazon in December 2020, especially around Christmas week. On some days around 2020 Christmas, Netflix was even higher than Apple, in #4, that is the case with December 23, 25, and from December 29 to January 2, 2021.</p>
    <div>
      <h3>February 2, 2021: The day YouTube (and an aerobics instructor) ruled the world</h3>
      <a href="#february-2-2021-the-day-youtube-and-an-aerobics-instructor-ruled-the-world">
        
      </a>
    </div>
    <p>In our global popularity ranking we also saw another trend: YouTube, usually ranked #6 or #7, got to the top spot of our list on February 2, 2021 — and only on that day.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5bbw7kQk4hlgv2jKaOxI71/d4227c24b5afcb89a7f10b5fd5e42dd6/image6-24.png" />
            
            </figure><p><a href="https://www.youtube.com/watch?v=yEHiTjViicE"><i>This</i></a> <i>fitness instructor video that happened while the Myanmar coup d’état was happening went viral on February 2, 2021, leading to the creation of thousands of memes</i></p><p>Why? One can only guess, but <a href="https://en.wikipedia.org/wiki/Portal:Current_events/2021_February_2">back then</a>, although it was the week of the <a href="https://en.wikipedia.org/wiki/Super_Bowl_LV">Super Bowl</a> (some commercials, like the <a href="https://www.youtube.com/watch?v=BLuqtTn4610">one from Doritos</a> with Matthew McConaughey, were out on that day), there was another big newsworthy event: the <a href="https://en.wikipedia.org/wiki/2021_Myanmar_coup_d%27%C3%A9tat">Myanmar coup d'état</a> on February 1, 2021. How can a coup in a Southeast Asian country have an impact on YouTube? A <a href="https://www.youtube.com/watch?v=yEHiTjViicE">video</a> of a fitness instructor who unwittingly filmed as the takeover unfolds behind her took the Internet by storm and <a href="https://www.bbc.com/news/world-asia-55901774">became viral as the memes</a> started to pour in.</p><p>That February day was also the one where Donald Trump <a href="https://www.cnbc.com/2021/02/01/what-to-know-about-trumps-new-legal-team-ahead-of-impeachment-trial.html">announced</a> his new legal team for the impeachment trial after the previous one quit, and Jeff Bezos announced he would step down as Amazon’s CEO. That was also the week prior to a record in YouTube’s history. On <a href="https://www.statista.com/statistics/249396/top-youtube-videos-views/">February 11, 2021</a>, the video "Baby Shark Dance" from Korean education brand Pinkfong was the new most-viewed YouTube video of all time, surpassing the former record holder "Despacito" by Luis Fonsi.</p><p><a href="https://trends.google.com/trends/explore?date=2021-01-01%202021-12-31&amp;q=%2Fm%2F09jcvs">Google Trends</a> also shows that the week of February 2 was the one in 2021 that “YouTube” was more searched on Google.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/B1OVn4YN9yTOcIFwBHeWl/62ffc5c3c81f9606879b60fc6c53818f/image1-93.png" />
            
            </figure>
    <div>
      <h3>Social media: There’s a new kid in town</h3>
      <a href="#social-media-theres-a-new-kid-in-town">
        
      </a>
    </div>
    <p>In what was the second year of the pandemic, social media domains continued high on our ranking. The nine main social media applications were all in our top 100 list of most popular global domains — the only one out is Quora.com (during 2021 it was between #687 and #242).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/9W9Ofie5i9nv3gjmfc1wm/d7e27e716175b2104643b611b04b2fc2/image17.png" />
            
            </figure>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/9l8AkbOEcVio8alKPE9be/f995f302523e620278ad949b2ac02f71/image15.png" />
            
            </figure><p>We can see that TikTok (who also surpassed Google, as we explained before in the global #1 spot) took Facebook from its crown of the most popular social media website-domain in our ranking. So, that should mean that TikTok got more Internet traffic from our standpoint (our ranking is derived from our <a href="https://www.cloudflare.com/learning/dns/what-is-1.1.1.1/">public DNS resolver 1.1.1.1</a> and so it's not related to the number of unique users or visitors it gets per month) — <a href="https://www.statista.com/statistics/264810/number-of-monthly-active-facebook-users-worldwide/">Facebook</a> is, by far, the platform with more users worldwide).</p>
    <div>
      <h3>Top 10 — Most popular social media domains (late) 2021</h3>
      <a href="#top-10-most-popular-social-media-domains-late-2021">
        
      </a>
    </div>
    <p>1 TikTok.com2 Facebook.com3 YouTube.com4 Twitter.com5 Instagram.com6 Snapchat.com7 Reddit.com8 Pinterest.com9 LinkedIn.com10 Quora.com</p>
    <div>
      <h3>Top 10 — Most popular social media domains (late) 2020</h3>
      <a href="#top-10-most-popular-social-media-domains-late-2020">
        
      </a>
    </div>
    <p>1 Facebook.com2 TikTok.com3 YouTube.com4 Instagram.com5 Twitter.com6 Snapchat.com7 Reddit.com8 Pinterest.com9 LinkedIn.com10 Quora.com</p><p>The Facebook outage — that <a href="/october-2021-facebook-outage/">we</a> explained from our standpoint <a href="/during-the-facebook-outage/">extensively</a> — on October 4, 2021, also had an impact on Facebook’s position in our ranking, leading to Facebook.com losing its #3 position (it was #4) for seven days in a row in that week. This number of days in #4 was something that never happened before (since September 2020) to the social media giant.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/507wsLS3AGM8iNoyrw45DM/5b0a847145d1ee5b9aa29284fb30d574/image10-5.png" />
            
            </figure><p>Looking to the top 10 list, it's also clear that, just looking to social media domains, YouTube comes third and Twitter got a bump up and beat Instagram in 2021, getting the #5 place (barely, in what was a very close race). Back in late 2020 Twitter was behind Instagram in our ranking.</p><p>LinkedIn is the ninth most popular social media domain in our ranking and is still in our top 100 and throughout 2021 it got higher in our list, especially in February and March. The social media for professionals then started to drop in June and July (in the Northern Hemisphere’s summer), starting in late August to climb again and by November it reached the #52 place, the highest of the year in our global ranking — in January it was ~#78. In a year when terms like <a href="/web-summit-2021-internet/">The Great Resignation and the reset of people and organizations’ mindsets</a> were talked about, it makes sense to see this social media platform growing.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/323U5hcdX3b8Nipi3f5AEB/e71817c828ad8b3c9a330e4c29364fc5/image18-3.png" />
            
            </figure>
    <div>
      <h3>Streaming: The (Squid) Netflix Game rules</h3>
      <a href="#streaming-the-squid-netflix-game-rules">
        
      </a>
    </div>
    <p>The so-called video <a href="https://en.wikipedia.org/wiki/Streaming_media#Streaming_wars">streaming wars</a> got another important round in 2021 with new players appearing and old ones having amazing numbers — not only in subscribers, revenue, and content budgets but also in... Internet traffic. In our ranking, Netflix is still the undefeated hero.</p><p>We added YouTube.com (its most important service is free) to the list to compare with the big numbers from Netflix, and still, the <a href="https://en.wikipedia.org/wiki/Squid_Game">Squid Game phenomenon</a> platform won our ranking for most of the year. Amazon Prime is not included because the streaming service mainly uses Amazon.com (ranked #5 or #6 most of the year) as a domain.</p><p>The days of the year when Netflix was more popular? January was a great month with Netflix reaching the #4 spot in our global ranking in the first two days of the year (and also all the weekends of January, Fridays included), going through February in the #5 place. For the rest of 2021, the platform was mostly #7. Yes, on the weekends Netflix seems to have a better performance in our ranking.</p><p>Roku.com seems to be the next video streaming platform after those two traffic giants, getting around the #80 position in our ranking through 2021. In late 2020 Hulu.com was the next one, but HBOMax.com surpassed Hulu in July 2021 and entered our top 100 list. In 2021, Disneyplus.com also rose in our ranking and surpassed the app-based TV service Sling.com later in the year. Our top 10 chart also includes Iq.com (iQiyi), the Chinese online video platform.</p>
    <div>
      <h3>Top 10 — Most popular video streaming domains (late) 2021</h3>
      <a href="#top-10-most-popular-video-streaming-domains-late-2021">
        
      </a>
    </div>
    <p>1 Netflix.com2 YouTube.com3 Roku.com4 HBOMax.com5 Hulu.com6 Peacocktv.com7 Disneyplus.com8 ParamountPlus.com9 Sling.com10 Iq.com</p>
    <div>
      <h3>Top 10 — Most popular video streaming domains (late) 2020</h3>
      <a href="#top-10-most-popular-video-streaming-domains-late-2020">
        
      </a>
    </div>
    <p>1 Netflix.com2 YouTube.com3 Roku.com4 Hulu.com5 HBOMax.com6 Peacocktv.com7 Sling.com8 Disneyplus.com9 Iq.com10 Wetv.vip</p>
    <div>
      <h3>Netflix vs YouTube</h3>
      <a href="#netflix-vs-youtube">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7bPgu0IeHSLBN82NOrb3i2/9a8699cdfffa7ddb8c1609940fd00103/image12-4.png" />
            
            </figure><p><i>In the chart Netflix.com, more dominant in most days, is in pink and YouTube.com is in yellow</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1DMr3Kpu5KNaUToSqn5tkr/088ca332f98455d4344f2d8819fb95af/image14.png" />
            
            </figure><p><i>Netflix and YouTube, but also Roku, HBOMax, Hulu.com and Peacocktv are a lot higher in our list than the others — Disney+ is getting there</i></p>
    <div>
      <h3>E-commerce: Podium to Amazon, Taobao and eBay</h3>
      <a href="#e-commerce-podium-to-amazon-taobao-and-ebay">
        
      </a>
    </div>
    <p>Since the pandemic started <a href="https://www.cloudflare.com/ecommerce/">e-commerce</a> has continued to <a href="https://www.statista.com/statistics/379046/worldwide-retail-e-commerce-sales/">strive and grow</a> at an even faster pace than before. The top four e-commerce domains (Amazon, Taobao, eBay and Walmart) in our global ranking are all in the top 100 and that happens steadily throughout the year.</p><p>The fifth in the e-commerce list, the Chinese giant Jd.com had a few periods that it also entered the top 100 mainly in May and especially June — on the day of the <a href="https://www.forbes.com/sites/franklavin/2021/06/21/chinas-annual-618-shopping-event-shows-consumers-are-back/">618 shopping event</a>, on June 18, 2021, it reached #68 on our list, beating Walmart.com and almost catching Ebay.com.</p><p>In the following list it is easy to see that Jd.com surpassed Shopify.com in 2021, occupying the #5 place, and also Bestbuy.com and Target.com rose from one year to another.</p>
    <div>
      <h3>Top 10 — Most popular e-commerce domains (late) 2021</h3>
      <a href="#top-10-most-popular-e-commerce-domains-late-2021">
        
      </a>
    </div>
    <p>1 Amazon.com2 Taobao.com3 Ebay.com4 Walmart.com5 Jd.com6 Shopify.com7 Bestbuy.com8 Target.com9 Rakuten.co.jp10 Homedepot.com</p>
    <div>
      <h3>Top 10 — Most popular e-commerce domains (late) 2020</h3>
      <a href="#top-10-most-popular-e-commerce-domains-late-2020">
        
      </a>
    </div>
    <p>1 Amazon.com2 Taobao.com3 Ebay.com4 Walmart.com5 Shopify.com6 Jd.com7 Olx.com.br8 Rakuten.co.jp9 Target.com10 Bestbuy.com*</p><p><i>Shein.com went ahead of Bestbuy.com and Target.com from December 19 to 24, 2020</i></p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/50EDb9lzfUsVw14tzdwWGC/f7ba1fa28abd5464c56c72f2260849d2/image21.png" />
            
            </figure><p>Here are other trends:</p><ul><li><p>Amazon.com is a domain, as we already explained, with more than e-commerce services (that’s why globally it ranks between #4 and #6). In 2021, it had some good days in January and in late April 2021, reaching #4, but by the end of the year it got its best days in our ranking, especially on the day before Cyber Monday, November 28, and on December 1 and 6 — it reached #5.</p></li><li><p>Taobao.com had its best day of the year in our global ranking on August 20 — #15 — and by the popular Chinese shopping day, Singles' Day, November 11, it was #17.</p></li><li><p>Ebay.com had a solid year and a good late August (#29 on August 31) and grew more after Cyber Monday, peaking on December 1, reaching #27.</p></li><li><p>Shopify had a great August (reaching #100 on August 18), the same with Etsy.com that peaked at #128 on August 21. Walmart had a great June (#66) and also end of November (it reached #70).</p></li><li><p>Ikea.com had a big increase in importance throughout the year and got very near to Homedepot.com’s position in September (peaked in the #695 position in our global ranking), staying up through November.</p></li><li><p>Best Buy peaked on October 6 and had a high growth throughout November, also matching Shopify in December.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7GG6wqMePKpZCPZHTdbdkh/e822608e076d7c6e4aaa8e4f5a162868/image19.png" />
            
            </figure><p><i>When we look to Shein.com we see that it peaked last Christmas and is on the rise since November 2021</i></p><ul><li><p>Shein.com, the global Chinese online fast-fashion retailer, went high in our ranking for the Christmas of 2020 — it went ahead of Bestbuy.com and Target.com from December 19 to 24, 2020, reaching the #253 position. In March, it had another peak, and it got the best position in 2021 in our ranking after Cyber Monday — it reached #301 on December 1, 2021.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/7oxSL1pzHx0dUPsCNRIE4b/36c4ec710a786995e98862a2f90e1672/image9-7.png" />
            
            </figure>
    <div>
      <h3>2021: A Space Odyssey (for NASA, SpaceX, Blue Origin and Virgin Galactic)</h3>
      <a href="#2021-a-space-odyssey-for-nasa-spacex-blue-origin-and-virgin-galactic">
        
      </a>
    </div>
    <p>This year was also a big year for space travel with several achievements. Spacecraft from <a href="https://en.wikipedia.org/wiki/2021_in_spaceflight">three Mars exploration</a> programs from the United Arab Emirates, China, and the United States arrived at Mars in February — NASA’s Perseverance rover landed on February 18, 2021, and after that the Ingenuity drone made history, being the first powered aircraft flight on another planet in human history. And there is also another big space event just around the corner — the <a href="https://en.wikipedia.org/wiki/James_Webb_Space_Telescope">James Webb Telescope launch</a>.</p><p>Virgin Galactic (July 11), Blue Origin (July 20) and SpaceX (September 16 — but with several other events before that regarding satellites and reuse of space capsules) also stormed the Internet with space tourism achievements with different scopes. Only SpaceX offered an orbital ride.</p><p>In terms of domains, NASA.gov was way ahead of the others, but Elon Musk’s SpaceX.com was definitely second in our global ranking, followed by Blueorigin.com. Virgingalactic.com only appears once in our top 100k ranking on July 17 and 18 (a few days after Richard Branson’s spaceflight).</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3kb3un5iW4czaefdYJBSk6/9a6547687067dd1f4f4320c88daaef09/image13-1.png" />
            
            </figure><p>Since last year NASA is high on our global ranking, in the top 1,000 domains of our list, but after the rover Perseverance landed on Mars on February 18 NASA.gov entered our top 700 ranking — the highest day of that month was February 25, when it reached #657. In the summer it went down in our ranking, but it picked up in late September and on October 13, 2021, reached the highest position of the year (#637). That was the day the <a href="https://blogs.nasa.gov/lucy/2021/10/13/launch-readiness-review-completed-for-nasas-lucy-mission/">press conference</a> about NASA's <a href="https://www.nasa.gov/press-release/nasa-ula-launch-lucy-mission-to-fossils-of-planet-formation">Lucy mission</a>, the agency’s first to Jupiter’s Trojan asteroids, took place (the launch was on October 16).</p><p>SpaceX.com had a great start of February, it entered our top 8,000, a month with a launch of 60 new Starlink internet satellites into orbit amidst a missed rocket landing and a fresh $850 million of new investment. And then it was after September 16, 2021, with the first orbital launch of an all-private crew, <a href="https://en.wikipedia.org/wiki/Inspiration4">Inspiration4</a>, that it flew again in our ranking.</p><p>For Blue Origin, after a strong start of the year — it reached our #32,000 on January 10 (a few days before New Shepard 4’s first test flight) — it went up between July 20- 27 after its first crewed flight, with Jeff Bezos onboard. It also went up in our ranking a few days after October 13, 2021 (the day William Shatner flew aboard a Blue Origin suborbital capsule).</p>
    <div>
      <h3>Messaging or chat: WhatsApp, what else?</h3>
      <a href="#messaging-or-chat-whatsapp-what-else">
        
      </a>
    </div>
    <p>There aren’t as many messaging or chat platforms as there are popular social media sites, video streaming, or e-commerce platforms. So, this ranking is slim, and even slimmer because Messenger (uses Facebook.com) or iMessage (uses Apple.com) aren’t included. Snapchat is both a social media platform and a messaging app — the same with Instagram — and we added them in the social media ranking.</p><p>If they were here they would be higher than Telegram but behind WhatsApp — Instagram actually started 2021 (it got to #8) in front of WhatsApp until February and went as low as #13 and Snapchat went between #29 to #16.</p>
    <div>
      <h3>Top — Most popular chat domains (late) 2021</h3>
      <a href="#top-most-popular-chat-domains-late-2021">
        
      </a>
    </div>
    <p>1 WhatsApp.com2 Telegram.org3 WeChat.com4 Signal.org</p>
    <div>
      <h3>Top — Most popular chat domains (late) 2020</h3>
      <a href="#top-most-popular-chat-domains-late-2020">
        
      </a>
    </div>
    <p>1 WhatsApp.com2 Telegram.org3 Signal.org4 WeChat.com</p><p>From our standpoint, WhatsApp is the undisputed leader of the messaging apps ranging from as low as #13 in our global ranking to as high as #8. Its best parts of the year were late March, late April, late October and then late November going through December 2021 as #8 in our ranking.</p><p>The only that is closer is Telegram.org, ranging from #170 to #88 (peaked in October 2021) throughout the year.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/77HiTdoCn9Ts1Q5jCoGcUa/9c820f117d49584e835a00ad7b5809b6/unnamed-35.png" />
            
            </figure>
    <div>
      <h3>How Signal skyrocketed in January (and WeChat in February)</h3>
      <a href="#how-signal-skyrocketed-in-january-and-wechat-in-february">
        
      </a>
    </div>
    <p>All the others are far away in our ranking, but 2021 brought three trends we should highlight:</p><ul><li><p><b>Signal.org</b> had an incredible month of January — on January 3 it was in #1815 in our ranking and by January 20 it rose to #766, a climb in more than 1,000 positions in just 17 days. Why? <a href="https://www.theverge.com/2021/1/12/22226792/whatsapp-privacy-policy-response-signal-telegram-controversy-clarification">WhatsApp's new privacy policy</a> was in the headlines in the <a href="https://www.theverge.com/2021/1/7/22218989/signal-new-signups-whatsapp-facebook-privacy-controversy-elon-musk">second week of January</a>.</p></li></ul>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1biROgl04CVeaZaN0MZ9ZZ/9ce3d1c77f9aab402258e24769a995f3/unnamed--1--20.png" />
            
            </figure><ul><li><p><b>WeChat.com</b> also had an amazing jump in our ranking, but more in February and by April it surpassed Signal.org — it went from #3142 at the start of February to #979 by April 25 and by October both of the messaging apps were almost tied at ~#370 and had a significantly higher place in our ranking than in late 2020. <b>Telegram.org</b> on the other hand started the year on a high note, #107, and rose to #102 after the first week of January, but lost positions in our ranking after that. In August started to grow more to reach the #88 spot we already mentioned — by then, WhatsApp was #10 in our ranking.</p></li></ul><blockquote><p><i>“You can't just materialize anywhere in the Metaverse, like Captain Kirk beaming down from on high. This would be confusing and irritating to the people around you. It would break the metaphor. Materializing out of nowhere (or vanishing back into Reality) is considered to be a private function best done in the confines of your own House.“</i>― Neal Stephenson, Snow Crash (1992)</p></blockquote>
    <div>
      <h3>Metaverse: Don’t mess with Roblox</h3>
      <a href="#metaverse-dont-mess-with-roblox">
        
      </a>
    </div>
    <p>Back in November, we heard in the <a href="/web-summit-2021-internet/">halls of Web Summit</a> — the 42,000 in-person tech global event in Lisbon — that in a way the metaverse is already here (Roblox’s Global Head of Music had some thoughts on virtual concerts). But we’re still far from the promise of almost living in the virtual world that books like Neal Stephenson’s Snow Crash or Ernest Cline’s Ready Player One showed us.</p><p>Oculus <a href="https://www.theverge.com/2021/11/16/22785469/meta-oculus-quest-2-10-million-units-sold-qualcomm-xr2">shipped</a> a lot of headsets and there are immersive experiences out there that are Metaverse-like (a step further than the now-usual-for-most spending all day working, learning, communicating through a screen) and we focused on that ones, like Fortnite, Roblox, Second Life (the oldest, from 2003), Minecraft and Oculus. But Oculus.com doesn’t have enough direct traffic (playing games using Oculus headset could direct the traffic elsewhere) to be in our top 100k domains ranking, and the same happens with Minecraft.</p>
    <div>
      <h3>Top — Most popular metaverse domains (late) 2021</h3>
      <a href="#top-most-popular-metaverse-domains-late-2021">
        
      </a>
    </div>
    <p>1 Roblox.com2 Epicgames.com (Fortnite)3 Secondlife.com</p><p><i>Oculus.com and Minecraft.net are not in our 100,000 ranking</i></p>
    <div>
      <h3>Top — Most popular metaverse domains (late) 2020</h3>
      <a href="#top-most-popular-metaverse-domains-late-2020">
        
      </a>
    </div>
    <p>1 Epicgames.com (Fortnite)2 Roblox.com3 Secondlife.com</p><p><i>Oculus.com and Minecraft.net are not in our 100,000 ranking</i></p><p>The (short) list from 2020 and 2021 shows us that Roblox.com surpassed Epicgames.com (the home of the popular Fortnite) for the first time in July reaching back then #27 in our list. But it was after late September that it was consistently in front of the rival game platform, ending the year on a good note reaching #20 in our ranking.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/75gGgtJ7iyu9ek4uSmhMIG/55dd2bb1c63fff955323b0cab5993ff8/image11-4.png" />
            
            </figure><p>Epicgames.com (Fortnite) started the year a lot better, reaching #14 on January 5, 2021, but it started to lose importance in February and that deepened after May, but mostly in July and August. It never truly recovered and ended the year between #26 and #47, depending on the day.</p>
    <div>
      <h2>Conclusion: Human (online) trends</h2>
      <a href="#conclusion-human-online-trends">
        
      </a>
    </div>
    <p>The Internet is not a quiet place, the same way humans on Earth (especially <a href="/cloudflare-radar-2020-year-in-review/">during a pandemic</a>) aren’t quiet or passive but active and reactive. Although on the top of our domain ranking there don’t seem to be drastic ups and downs throughout the year (TikTok, and YouTube, were the exceptions), we saw how an event like the Myanmar coup and the subsequent viral video may have brought YouTube to #1 on our ranking. We also saw how <a href="https://www.cloudflare.com/solutions/ecommerce/optimization/">e-commerce</a> was affected throughout the year, how space-related websites had a big (online) year with important events, and how Netflix rose around Christmas time.</p><p>And remember: you can keep an eye on <a href="https://radar.cloudflare.com/">Cloudflare Radar</a> to monitor how we see Internet traffic globally and in every country.</p><p><i>(Update 12/22/2021: We have corrected the data about Telegram.org — the domain that was used initially wasn’t the right one.)</i></p> ]]></content:encoded>
            <category><![CDATA[Radar]]></category>
            <category><![CDATA[Year in Review]]></category>
            <category><![CDATA[Trends]]></category>
            <guid isPermaLink="false">4WKW31NShwhrKy0P39OhWj</guid>
            <dc:creator>João Tomé</dc:creator>
            <dc:creator>Sofia Cardita</dc:creator>
        </item>
    </channel>
</rss>