 # Scrapfly Blog

Tutorials, guides, and insights on web scraping, data extraction, and automation 272 articles

 

  Search articles  

 [  ](https://scrapfly.io/blog/feed.xml "Subscribe via RSS") 

   [All](https://scrapfly.io/blog) [ai](https://scrapfly.io/blog/tag/ai) [api](https://scrapfly.io/blog/tag/api) [automation](https://scrapfly.io/blog/tag/automation) [beautifulsoup](https://scrapfly.io/blog/tag/beautifulsoup) [blocking](https://scrapfly.io/blog/tag/blocking) [cloud-browser](https://scrapfly.io/blog/tag/cloud-browser) [crawling](https://scrapfly.io/blog/tag/crawling) [css-selectors](https://scrapfly.io/blog/tag/css-selectors) [curl](https://scrapfly.io/blog/tag/curl) [data-parsing](https://scrapfly.io/blog/tag/data-parsing) [ecommerce](https://scrapfly.io/blog/tag/ecommerce) [fashion](https://scrapfly.io/blog/tag/fashion) [frameworks](https://scrapfly.io/blog/tag/frameworks) [golang](https://scrapfly.io/blog/tag/golang) [graphql](https://scrapfly.io/blog/tag/graphql) [headless-browser](https://scrapfly.io/blog/tag/headless-browser) [hidden-api](https://scrapfly.io/blog/tag/hidden-api) [http](https://scrapfly.io/blog/tag/http) [httpx](https://scrapfly.io/blog/tag/httpx) [java](https://scrapfly.io/blog/tag/java) [javascript](https://scrapfly.io/blog/tag/javascript) [jupyter](https://scrapfly.io/blog/tag/jupyter) [nodejs](https://scrapfly.io/blog/tag/nodejs) [parsel](https://scrapfly.io/blog/tag/parsel) [php](https://scrapfly.io/blog/tag/php) [playwright](https://scrapfly.io/blog/tag/playwright) [project](https://scrapfly.io/blog/tag/project) [proxies](https://scrapfly.io/blog/tag/proxies) [puppeteer](https://scrapfly.io/blog/tag/puppeteer) [python](https://scrapfly.io/blog/tag/python) [r](https://scrapfly.io/blog/tag/r) [real-estate](https://scrapfly.io/blog/tag/real-estate) [requests](https://scrapfly.io/blog/tag/requests) [ruby](https://scrapfly.io/blog/tag/ruby) [scaling](https://scrapfly.io/blog/tag/scaling) [scrapeguide](https://scrapfly.io/blog/tag/scrapeguide) [scrapy](https://scrapfly.io/blog/tag/scrapy) [screenshots](https://scrapfly.io/blog/tag/screenshots) [selenium](https://scrapfly.io/blog/tag/selenium) [seo](https://scrapfly.io/blog/tag/seo) [tools](https://scrapfly.io/blog/tag/tools) [typescript](https://scrapfly.io/blog/tag/typescript) [web-scraping](https://scrapfly.io/blog/tag/web-scraping) [xpath](https://scrapfly.io/blog/tag/xpath)   ## // Articles

 12 posts 

 [ Latest  

 http python blocking 

### HTTP/2 and HTTP/3 Fingerprinting: Protocol-Level Bot Detection

Learn how HTTP/2 and HTTP/3 fingerprinting works at the protocol level, how anti-bot services use SETTINGS frames, pseudo-header ordering, and QUIC transport parameters to detect scrapers, and how to ...

 Apr 08, 2026 13 min read 

 

 ](https://scrapfly.io/blog/posts/http2-http3-fingerprinting-guide) [  

 blocking tools 

### How Browser Fingerprinting Works and How to Defend Against It

Learn how browser fingerprinting works, from canvas to WebGPU, and discover developer-focused techniques to bypass detec...

 Apr 08, 2026 16 min read 

 

 ](https://scrapfly.io/blog/posts/how-browser-fingerprinting-works) [  

 python blocking nodejs 

### Playwright Stealth: Bypass Bot Detection in Python &amp; Node.js

Complete guide to using playwright-stealth in Python and playwright-extra with stealth plugin in Node.js. Covers how det...

 Mar 10, 2026 19 min read 

 

 ](https://scrapfly.io/blog/posts/playwright-stealth-bypass-bot-detection) [  

 python cloud-browser typescript 

### Stagehand vs Browser Use: AI Browser Agent Guide

Compare Stagehand and Browser Use AI browser agents. Learn which framework fits your language, workflow, and automation ...

 Mar 06, 2026 11 min read 

 

 ](https://scrapfly.io/blog/posts/stagehand-vs-browser-use) [     

 http blocking 

### Post-Quantum TLS: Why Scraping Tools Are Now Exposed

Post-quantum TLS is now a live bot detection signal. Modern browsers send X25519MLKEM768 key shares by default, and scra...

 Mar 04, 2026 16 min read 

 

 ](https://scrapfly.io/blog/posts/post-quantum-tls-bot-detection) [     

 blocking 

### How to Bypass Cloudflare Turnstile

Learn how Cloudflare Turnstile detects bots and 3 proven methods to bypass Turnstile challenges when web scraping.

 Feb 27, 2026 12 min read 

 

 ](https://scrapfly.io/blog/posts/how-to-bypass-cloudflare-turnstile) [     

 blocking 

### How to Bypass Anti-Bot Protection When Web Scraping

Learn how anti-bot systems detect scrapers and 5 universal bypass techniques including proxy rotation, fingerprinting, a...

 Feb 27, 2026 14 min read 

 

 ](https://scrapfly.io/blog/posts/how-to-bypass-anti-bot-protection-when-web-scraping) [     

 blocking nodejs headless-browser 

### Puppeteer Stealth: Complete Guide to Avoiding Detection

Complete guide to puppeteer-extra-plugin-stealth for avoiding bot detection. Learn how detection works, configure stealt...

 Feb 19, 2026 16 min read 

 

 ](https://scrapfly.io/blog/posts/puppeteer-stealth-complete-guide) [     

 python headless-browser ai 

### How to Create an AI Browser Agent for Free

Build two free AI browser agents using Browser-Use (Python) and Stagehand (TypeScript) with step-by-step code examples a...

 Feb 18, 2026 8 min read 

 

 ](https://scrapfly.io/blog/posts/how-to-create-an-ai-browser-agent-for-free) [     

 headless-browser cloud-browser automation 

### Headless Browser vs Cloud Browser: Which One Should You Choose?

Compare headless browsers and cloud browsers for web scraping and automation. Learn when to use local headless browsers ...

 Feb 13, 2026 17 min read 

 

 ](https://scrapfly.io/blog/posts/headless-browser-vs-cloud-browser) [     

 blocking 

### Best CAPTCHA Solving APIs in 2026

Compare the best CAPTCHA solving services including 2Captcha, CapSolver, Anti-Captcha, and browser-integrated solutions....

 Feb 05, 2026 12 min read 

 

 ](https://scrapfly.io/blog/posts/best-captcha-solving-api) [     

 headless-browser 

### Cloud Browser: What Is It and How to Use It

Learn what cloud browsers are, how they work, and how to use them for web scraping, automation, and AI agents. Covers pr...

 Feb 04, 2026 9 min read 

 

 ](https://scrapfly.io/blog/posts/what-is-a-cloud-browser) 

  1 [2](https://scrapfly.io/blog?page=2) [3](https://scrapfly.io/blog?page=3) … [23](https://scrapfly.io/blog?page=23) [  ](https://scrapfly.io/blog?page=2) 

 Page 1 of 23 · 272 articles  ## ? Quick Answers

 

###  nodejs [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to take screenshots in NodeJS? ](https://scrapfly.io/blog/answers/how-to-take-screenshots-nodejs)
 
 

###  css-selectors [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to use CSS Selectors in Nim ? ](https://scrapfly.io/blog/answers/how-to-use-css-selectors-in-nim)
- [ Q Is it possible to select preceding siblings using CSS selectors? ](https://scrapfly.io/blog/answers/how-to-select-preceding-sibling-element-css-selectors)
- [ Q How to select following siblings using CSS selectors? ](https://scrapfly.io/blog/answers/how-to-select-following-sibling-element-css-selectors)
- [ Q How to select elements by ID using CSS selectors? ](https://scrapfly.io/blog/answers/how-to-select-elements-by-id-css-selectors)
- [ Q How to select elements by class using CSS selectors? ](https://scrapfly.io/blog/answers/how-to-select-elements-by-class-css-selectors)
 
 

###  proxies [View all ](https://scrapfly.io/blog/answers) 

- [ Q What is The cURL (28) Error, Couldn't connect to server? ](https://scrapfly.io/blog/answers/what-is-the-curl-28-error)
- [ Q How To Use Proxy With cURL? ](https://scrapfly.io/blog/answers/how-to-use-proxy-with-curl)
- [ Q How to Solve the cURL (60) Error When Using Proxy? ](https://scrapfly.io/blog/answers/how-to-solve-the-curl-60-error-when-proxy)
- [ Q What are SOCKS5 proxies and how they compare to HTTP proxies? ](https://scrapfly.io/blog/answers/what-are-socks5-proxies-in-web-scraping)
- [ Q What are private proxies and how are they used in scraping? ](https://scrapfly.io/blog/answers/what-are-private-proxies-compared-to-shared)
 
 

###  curl [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to Set User Agent With cURL? ](https://scrapfly.io/blog/answers/how-to-set-curl-user-agent)
- [ Q How to Use cURL Config Files? ](https://scrapfly.io/blog/answers/how-to-set-curl-config-file)
- [ Q How to Set cURL Authentication - Full Examples Guide ](https://scrapfly.io/blog/answers/how-to-set-authorization-with-curl-full-examples-guide)
- [ Q How To Send Multiple cURL Requests in Parallel? ](https://scrapfly.io/blog/answers/how-to-send-multiple-curl-requests-in-parallel)
- [ Q How to Send a HEAD Request With cURL? ](https://scrapfly.io/blog/answers/how-to-send-curl-head-requests)
 
 

###  http [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to Copy as cURL With Safari? ](https://scrapfly.io/blog/answers/how-to-copy-as-curl-with-safari)
- [ Q How to Copy as cURL With Firefox? ](https://scrapfly.io/blog/answers/how-to-copy-as-curl-with-firefox)
- [ Q How to Copy as cURL With Edge? ](https://scrapfly.io/blog/answers/how-to-copy-as-curl-with-edge)
- [ Q How To Copy as cURL With Google Chrome? ](https://scrapfly.io/blog/answers/how-to-copy-as-curl-with-chrome)
- [ Q How to Copy as cURL With Brave? ](https://scrapfly.io/blog/answers/how-to-copy-as-curl-with-brave)
 
 

###  python [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to scrape HTML table to Excel Spreadsheet (.xlsx)? ](https://scrapfly.io/blog/answers/html-table-to-xlsx-python-beautifulsoup)
- [ Q How to handle popup dialogs in Playwright? ](https://scrapfly.io/blog/answers/how-to-click-on-alert-dialog-in-playwright)
- [ Q How to scrape images from a website? ](https://scrapfly.io/blog/answers/how-to-scrape-images-from-website)
- [ Q What are some ways to parse JSON datasets in Python? ](https://scrapfly.io/blog/answers/what-are-some-ways-to-parse-json-datasets-in-python)
- [ Q How to select dictionary key recursively in Python? ](https://scrapfly.io/blog/answers/how-to-select-dictionary-key-recursively-in-python)
 
 

###  tools [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to edit Local Storage data using browser Devtools ](https://scrapfly.io/blog/answers/how-to-edit-local-storage-using-devtools)
- [ Q How to edit cookies in Chrome devtools? ](https://scrapfly.io/blog/answers/how-to-edit-cookies-using-chrome-devtools)
 
 

###  selenium [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to click on cookie popups and modal alerts in Selenium? ](https://scrapfly.io/blog/answers/how-to-click-on-modal-alerts-like-cookie-pop-up-in-selenium)
- [ Q How to handle popup dialogs in Selenium? ](https://scrapfly.io/blog/answers/how-to-click-on-alert-dialog-in-selenium)
- [ Q How to scroll to the bottom of the page with Selenium? ](https://scrapfly.io/blog/answers/how-to-scroll-to-the-bottom-with-selenium)
- [ Q How to capture background requests and responses in Selenium? ](https://scrapfly.io/blog/answers/how-to-capture-xhr-requests-selenium)
- [ Q How to block resources in Selenium and Python? ](https://scrapfly.io/blog/answers/how-to-block-resources-in-selenium)
 
 

###  puppeteer [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to click on cookie popups and modal alerts in Puppeteer? ](https://scrapfly.io/blog/answers/how-to-click-on-modal-alerts-like-cookie-pop-up-in-puppeteer)
- [ Q How to handle popup dialogs in Puppeteer? ](https://scrapfly.io/blog/answers/how-to-click-on-alert-dialog-in-puppeteer)
- [ Q How to scroll to the bottom of the page with Puppeteer? ](https://scrapfly.io/blog/answers/how-to-scroll-to-the-bottom-with-puppeteer)
- [ Q Getting started with Puppeteer Stealth ](https://scrapfly.io/blog/answers/how-to-use-puppeteer-stealth-what-does-it-do)
 
 

###  playwright [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to click on cookie popups and modal alerts in Playwright? ](https://scrapfly.io/blog/answers/how-to-click-on-modal-alerts-like-cookie-pop-up-in-playwright)
- [ Q How to scroll to the bottom of the page with Playwright? ](https://scrapfly.io/blog/answers/how-to-scroll-to-the-bottom-with-playwright)
- [ Q How to run Playwright in Jupyter notebooks? ](https://scrapfly.io/blog/answers/playwright-in-ipython)
 
 

###  scrapy [View all ](https://scrapfly.io/blog/answers) 

- [ Q What are scrapy middlewares and how to use them? ](https://scrapfly.io/blog/answers/what-are-scrapy-middlewares-and-how-to-use-them)
- [ Q What are scrapy pipelines and how to use them? ](https://scrapfly.io/blog/answers/what-are-scrapy-pipelines-and-how-to-use-them)
- [ Q How to pass custom parameters to scrapy spiders? ](https://scrapfly.io/blog/answers/how-to-pass-parameters-to-scrapy-spiders-cli)
- [ Q What are scrapy Item and ItemLoader objects and how to use them? ](https://scrapfly.io/blog/answers/what-are-scrapy-items-and-itemloaders)
- [ Q How to pass data from start\_requests to parse callbacks in scrapy? ](https://scrapfly.io/blog/answers/how-to-pass-data-from-start-request-to-callbacks-scrapy)
 
 

###  xpath [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to select elements by attribute value in XPath? ](https://scrapfly.io/blog/answers/how-to-select-elements-by-attribute-value)
- [ Q How to select sibling elements in XPath? ](https://scrapfly.io/blog/answers/how-to-select-sibling-elements-using-xpath)
- [ Q How to select elements of a specific position in XPath? ](https://scrapfly.io/blog/answers/how-to-select-elements-of-specific-position-in-xpath)
- [ Q How to select any element using wildcard in XPath? ](https://scrapfly.io/blog/answers/how-to-select-elements-of-any-name-using-wildcards-in-xpath)
- [ Q How to select elements by ID in XPath? ](https://scrapfly.io/blog/answers/how-to-select-elements-by-id-in-xpath)
 
 

###  headless-browser [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to use headless browsers with scrapy? ](https://scrapfly.io/blog/answers/how-to-use-headless-browsers-with-scrapy)
 
 

###  data-parsing [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to select last element in XPath? ](https://scrapfly.io/blog/answers/how-to-select-last-element-in-xpath)
- [ Q How to select all elements between two elements in XPath? ](https://scrapfly.io/blog/answers/how-to-select-all-elements-between-two-known-elements-in-xpath)
 
 

###  requests [View all ](https://scrapfly.io/blog/answers) 

- [ Q How to configure Python requests to use a proxy? ](https://scrapfly.io/blog/answers/python-requests-proxy-intro)
 
 

###  blocking [View all ](https://scrapfly.io/blog/answers) 

- [ Q Web scraping - what is HTTP 520 status code? ](https://scrapfly.io/blog/answers/520-status-code)
- [ Q Web scraping - what is HTTP 503 status code? ](https://scrapfly.io/blog/answers/503-status-code)
- [ Q Web scraping - what is HTTP 499 status code? ](https://scrapfly.io/blog/answers/499-status-code)
- [ Q What is 444 status code and how to avoid it? ](https://scrapfly.io/blog/answers/444-status-code)
- [ Q Web scraping - what is HTTP 429 status code? ](https://scrapfly.io/blog/answers/429-status-code)
 
 

 

  ## Ready to scale your web scraping?

Anti-bot bypass, browser rendering, and rotating proxies, all in one API.

 

 [ Try Scrapfly for FREE ](https://scrapfly.io/register) [ View Documentation ](https://scrapfly.io/docs/onboarding)