56,966 blogs · [ { "id": "01a08c58-9882-70ef-8efa-68128089619f", "title": "Advanced network traffic interception techniques with mitmproxy", "url": "https://www.trickster.dev/post/advanced-network-traffic-interception-techniques-with-mitmproxy/", "published_at": "2025-12-03T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681281573a78", "title": "Scraping Next.js web sites in 2025", "url": "https://www.trickster.dev/post/scraping-nextjs-web-sites-in-2025/", "published_at": "2025-10-31T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128243dc10", "title": "Setting up rooted Android emulator with Frida and mitmproxy", "url": "https://www.trickster.dev/post/setting-up-rooted-android-emulator-with-frida-and-mitmproxy/", "published_at": "2025-09-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128320fd3a", "title": "jq: tool and language for JSON processing", "url": "https://www.trickster.dev/post/jq-tool-and-language-for-json-processing/", "published_at": "2025-06-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812836d370c", "title": "Katana: web crawler for offensive security and web exploration", "url": "https://www.trickster.dev/post/katana-web-crawler-for-offensive-security-and-web-exploration/", "published_at": "2024-10-01T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681283c13b17", "title": "Lesser known parts of Python standard library", "url": "https://www.trickster.dev/post/lesser-known-parts-of-python-standard-library/", "published_at": "2024-08-19T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812842725e6", "title": "Simple ways to find exposed sensitive information", "url": "https://www.trickster.dev/post/simple-ways-to-find-exposed-sensitive-information/", "published_at": "2024-06-21T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812851e9633", "title": "Understanding SOCKS protocol", "url": "https://www.trickster.dev/post/understanding-socks-protocol/", "published_at": "2024-05-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681285369215", "title": "Scraping Clutch for B2B company data", "url": "https://www.trickster.dev/post/scraping-clutch-for-b2b-company-data/", "published_at": "2024-04-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128607a86a", "title": "SSH tips and tricks", "url": "https://www.trickster.dev/post/ssh-tips-and-tricks/", "published_at": "2024-02-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681286c5164e", "title": "Retrospective scraping of historical data from Internet Archive snapshots", "url": "https://www.trickster.dev/post/retrospective-scraping-of-historical-data-from-internet-archive-snapshots/", "published_at": "2023-12-27T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812872c98d1", "title": "Obscure corners of a standard macOS installation", "url": "https://www.trickster.dev/post/obscure-corners-of-a-standard-macos-installation/", "published_at": "2023-11-11T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681287c57b1e", "title": "Scraping data from Google Places API", "url": "https://www.trickster.dev/post/scraping-data-from-google-places-api/", "published_at": "2023-11-05T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681287d4d61e", "title": "Extracting data from elasticsearch API", "url": "https://www.trickster.dev/post/extracting-data-from-elasticsearch-api/", "published_at": "2023-10-16T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681288889b43", "title": "Setting up mitmproxy with iOS 17.1", "url": "https://www.trickster.dev/post/setting-up-mitmproxy-with-ios17.1/", "published_at": "2023-10-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128893ee2a", "title": "Parsing HTML documents with Beautiful Soup", "url": "https://www.trickster.dev/post/parsing-html-documents-with-beautiful-soup/", "published_at": "2023-09-22T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681288ba3058", "title": "Solving a simple JS challenge with sandboxing", "url": "https://www.trickster.dev/post/solving-a-simple-js-challenge-with-sandboxing/", "published_at": "2023-09-15T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681288e67e8b", "title": "Abusing GOAT mobile API for data scraping", "url": "https://www.trickster.dev/post/abusing-goat-mobile-api-for-data-scraping/", "published_at": "2023-08-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812892762be", "title": "Scrapy by example: scraping company data from Yelp", "url": "https://www.trickster.dev/post/scrapy-by-example-scraping-company-data-from-yelp/", "published_at": "2023-08-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812896f77ed", "title": "Back to the terminal: the new era of CLI and TUI software", "url": "https://www.trickster.dev/post/back-to-the-terminal-the-new-era-of-cli-and-tui-software/", "published_at": "2023-08-09T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128a6c4886", "title": "Restringer: modular JavaScript deobfuscator", "url": "https://www.trickster.dev/post/restringer-modular-javascript-deobfuscator/", "published_at": "2023-07-30T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128b3e96f1", "title": "Using Scrapy-playwright for integrating browser automation with Scrapy", "url": "https://www.trickster.dev/post/using-scrapy-playwright-for-integrating-browser-automation-with-scrapy/", "published_at": "2023-07-22T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128c207e32", "title": "Self-defending JS code and debugger traps", "url": "https://www.trickster.dev/post/self-defending-js-code-and-debugger-traps/", "published_at": "2023-07-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128c8cc3e6", "title": "Abusing Ahrefs Backlink Checker", "url": "https://www.trickster.dev/post/abusing-ahrefs-backlink-checker/", "published_at": "2023-06-27T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128cefc65a", "title": "Don't JSFuck with me: Part 3", "url": "https://www.trickster.dev/post/dont-jsfuck-with-me-part-3/", "published_at": "2023-06-25T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128dda1dd6", "title": "Prompting the LLM is no substitute for knowledge work", "url": "https://www.trickster.dev/post/prompting-the-llm-is-no-substitute-for-knowledge-work/", "published_at": "2023-05-31T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128ec032cc", "title": "Understanding JavaScript packers", "url": "https://www.trickster.dev/post/understanding-javascript-packers/", "published_at": "2023-05-30T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128f3dbb20", "title": "Scraping product data from Nike.com", "url": "https://www.trickster.dev/post/scraping-product-data-from-nike/", "published_at": "2023-05-15T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68128fa66e45", "title": "How do they (try to) block bots: a broad review of automation countermeasures", "url": "https://www.trickster.dev/post/how-do-they-try-to-block-bots-a-broad-review-of-automation-countermeasures/", "published_at": "2023-05-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681290a34945", "title": "CrawlSpider and link extractors for rule-based crawling in Scrapy", "url": "https://www.trickster.dev/post/crawlspider-and-link-extractors-for-rule-based-crawling-in-scrapy/", "published_at": "2023-05-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812915720d7", "title": "Intro to Bash scripting for scraping and automation", "url": "https://www.trickster.dev/post/intro-to-bash-scripting-for-scraping-and-automation/", "published_at": "2023-04-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681291cd6fa7", "title": "Don't JSFuck with me: Part 2", "url": "https://www.trickster.dev/post/dont-jsfuck-with-me-part-2/", "published_at": "2023-03-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681292b5fb47", "title": "Don't JSFuck with me: Part 1", "url": "https://www.trickster.dev/post/dont-jsfuck-with-me-part-1/", "published_at": "2023-02-24T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681293b5b405", "title": "Understanding HTTP/2 fingerprinting", "url": "https://www.trickster.dev/post/understanding-http2-fingerprinting/", "published_at": "2023-02-23T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129425833b", "title": "JavaScript AST manipulation with Babel: reducing nestedness, unflattening the CFG", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-reducing-nestedness-unflattening-the-cfg/", "published_at": "2023-02-18T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129470efce", "title": "JavaScript AST manipulation with Babel: reducing indirection, undoing string concealing", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-reducing-indirection-undoing-string-concealing/", "published_at": "2023-02-13T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681294755e51", "title": "JavaScript AST manipulation with Babel: constant folding and propagation", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-constant-folding-and-propagation/", "published_at": "2023-02-07T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681294ad8c7c", "title": "JavaScript AST manipulation with Babel: AST modification APIs", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-ast-modification-apis/", "published_at": "2023-01-30T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681295433d85", "title": "JavaScript AST manipulation with Babel: untangling scope confusion", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-untangling-scope-confusion/", "published_at": "2023-01-25T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812962b8238", "title": "JavaScript AST manipulation with Babel: 3 ways to create nodes and subtrees", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-3-ways-to-create-nodes-and-subtrees/", "published_at": "2023-01-23T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681296c4af9c", "title": "JavaScript AST manipulation with Babel: transform prototyping and plugin development", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-transform-prototyping-and-plugin-development/", "published_at": "2023-01-18T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812979272c7", "title": "Understanding Python generators for scraping and automation", "url": "https://www.trickster.dev/post/understanding-python-generators-for-scraping-and-automation/", "published_at": "2023-01-15T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812986836f8", "title": "Scraping Yahoo! Finance with Python", "url": "https://www.trickster.dev/post/scraping-yahoo-finance-with-python/", "published_at": "2023-01-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-681298d0c14c", "title": "Vim is touch-typing on steroids", "url": "https://www.trickster.dev/post/vim-is-touch-typing-on-steroids/", "published_at": "2023-01-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129952161f", "title": "Scrapy simplified: developing a single file web scraper", "url": "https://www.trickster.dev/post/scrapy-simplified-developing-a-single-file-web-scraper/", "published_at": "2022-12-26T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129a261f89", "title": "Getting the data under version control with dolt", "url": "https://www.trickster.dev/post/getting-the-data-under-version-control-with-dolt/", "published_at": "2022-12-15T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129a692e67", "title": "Understanding SPF, DKIM, DMARC for email security and deliverability", "url": "https://www.trickster.dev/post/understanding-spf-dkim-dmarc-for-email-security-and-deliverability/", "published_at": "2022-12-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129b5555a9", "title": "SMTP, IMAP, POP3 and MIME: understanding email protocols", "url": "https://www.trickster.dev/post/smtp-imap-pop3-and-mime-understanding-email-protocols/", "published_at": "2022-11-21T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129c49bb2d", "title": "Wget tips and tricks", "url": "https://www.trickster.dev/post/wget-tips-and-tricks/", "published_at": "2022-11-11T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129c8dacc7", "title": "Axiom: just-in-time dynamic infra for offensive security operations", "url": "https://www.trickster.dev/post/axiom-just-in-time-dynamic-infra-for-offensive-security-operations/", "published_at": "2022-11-07T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129cd31669", "title": "Scraping legacy ASP.Net sites with Scrapy: a real world example", "url": "https://www.trickster.dev/post/scraping-legacy-asp-net-site-with-scrapy-a-real-example/", "published_at": "2022-10-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129d234f90", "title": "Making heuristics smarter with GPT-3", "url": "https://www.trickster.dev/post/making-heuristics-smarter-with-gpt3/", "published_at": "2022-10-09T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129e1b1ddd", "title": "JavaScript AST manipulation with Babel: defeating string array mapping", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-defeating-string-array-mapping/", "published_at": "2022-10-08T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129e995416", "title": "Active DNS recon techniques", "url": "https://www.trickster.dev/post/active-dns-recon-techniques/", "published_at": "2022-09-24T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-68129f9572ba", "title": "Passive DNS recon techniques", "url": "https://www.trickster.dev/post/passive-dns-recon-techniques/", "published_at": "2022-09-17T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a027d4d4", "title": "HTTPX: modern Python module for doing HTTP(S) requests", "url": "https://www.trickster.dev/post/httpx-modern-python-module-for-doing-https-requests/", "published_at": "2022-09-16T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a1133904", "title": "Recon-ng: modular framework for OSINT automation", "url": "https://www.trickster.dev/post/recon-ng-modular-framework-for-osint-automation/", "published_at": "2022-09-07T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a1b3e86e", "title": "cURL beyond the basics", "url": "https://www.trickster.dev/post/curl-beyond-the-basics/", "published_at": "2022-09-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a296f50d", "title": "Running Stable Diffusion on Vultr", "url": "https://www.trickster.dev/post/running-stable-diffusion-on-vultr/", "published_at": "2022-08-31T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a36369c7", "title": "Experimenting with DALL-E", "url": "https://www.trickster.dev/post/experimenting-with-dall-e/", "published_at": "2022-08-30T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a410db8b", "title": "JavaScript AST manipulation with Babel: removing unreachable code", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-removing-unreachable-code/", "published_at": "2022-08-28T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a42d89bc", "title": "Building Python script CLIs with argparse and Click", "url": "https://www.trickster.dev/post/building-python-script-clis-with-argparse-and-click/", "published_at": "2022-08-27T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a4a82e52", "title": "ImageMagick: programmable image processing toolkit", "url": "https://www.trickster.dev/post/imagemagick-programmable-image-processing-toolkit/", "published_at": "2022-08-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a56e1dc9", "title": "Writing custom Scrapy middleware for proxy pool integration", "url": "https://www.trickster.dev/post/writing-custom-scrapy-middleware-for-proxy-pool-integration/", "published_at": "2022-08-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a63b08b3", "title": "Decompiling Android apps", "url": "https://www.trickster.dev/post/decompiling-android-apps/", "published_at": "2022-08-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a6b15cc8", "title": "JavaScript AST manipulation with Babel: extracting hardcoded data", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-extracting-hardcoded-data/", "published_at": "2022-08-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a715a325", "title": "More tools of the trade for scraping and automation", "url": "https://www.trickster.dev/post/more-tools-of-the-trade-for-scraping-and-automation/", "published_at": "2022-07-26T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a71b41b2", "title": "JavaScript AST manipulation with Babel: the first steps", "url": "https://www.trickster.dev/post/javascript-ast-manipulation-with-babel-the-first-steps/", "published_at": "2022-07-20T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a79641dd", "title": "Javascript obfuscation techniques by example", "url": "https://www.trickster.dev/post/javascript-obfuscation-techniques-by-example/", "published_at": "2022-07-10T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a7b187d7", "title": "How to scrape Zillow with Python and Scrapy", "url": "https://www.trickster.dev/post/how-to-scrape-zillow-with-python-and-scrapy/", "published_at": "2022-07-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a8082897", "title": "Understanding TLS fingerprinting", "url": "https://www.trickster.dev/post/understanding-tls-fingerprinting/", "published_at": "2022-06-27T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a853d6ec", "title": "How to scrape Youtube view intensity time series", "url": "https://www.trickster.dev/post/how-to-scrape-youtube-view-intensity-time-series/", "published_at": "2022-06-16T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812a9386bbc", "title": "Understanding Abstract Syntax Trees", "url": "https://www.trickster.dev/post/understanding-abstract-syntax-trees/", "published_at": "2022-06-15T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812aa08bdae", "title": "Notes from The Bug Hunters Methodology - Application Analysis v1", "url": "https://www.trickster.dev/post/notes-from-the-bug-hunters-methodology-application-analysis-v1/", "published_at": "2022-06-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812aa6c1bca", "title": "Building higher-order automation workflows with n8n", "url": "https://www.trickster.dev/post/building-higher-order-automation-workflows-with-n8n/", "published_at": "2022-06-12T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812aa849803", "title": "Importing Shopify product info programmatically", "url": "https://www.trickster.dev/post/importing-shopify-product-info-programmatically/", "published_at": "2022-06-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812ab33b24e", "title": "Turning Scrapy spider into API with ScrapyRT", "url": "https://www.trickster.dev/post/turning-scrapy-spider-into-api-with-scrapyrt/", "published_at": "2022-06-04T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812aba31669", "title": "Scraping Instagram API with Instauto", "url": "https://www.trickster.dev/post/scraping-instagram-api-with-instauto/", "published_at": "2022-05-23T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812ac3d8a4d", "title": "Scapy: low level packet hacking toolkit for Python", "url": "https://www.trickster.dev/post/scapy-low-level-packet-hacking-toolkit-for-python/", "published_at": "2022-05-08T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812acc99c28", "title": "Strategies and patterns of gray hat social media automation", "url": "https://www.trickster.dev/post/strategies-and-patterns-of-gray-hat-social-media-automation/", "published_at": "2022-04-26T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812adb4dc2f", "title": "You probably don't need AWS and are better off without it", "url": "https://www.trickster.dev/post/you-probably-dont-need-aws-and-are-better-off-without-it/", "published_at": "2022-04-20T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812adfdd3bc", "title": "Compiling Python programs with Pyinstaller", "url": "https://www.trickster.dev/post/compiling-python-programs-with-pyinstaller/", "published_at": "2022-04-19T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812ae0ede79", "title": "Notes on TBHM v4 recon edition", "url": "https://www.trickster.dev/post/notes-on-tbhm-v4-recon-edition/", "published_at": "2022-04-14T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812ae5fe2ba", "title": "Writing web scrapers in Go with Colly framework", "url": "https://www.trickster.dev/post/writing-web-scrapers-in-go-with-colly-framework/", "published_at": "2022-04-09T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812af0ae228", "title": "Creating DC proxies on cloud providers", "url": "https://www.trickster.dev/post/creating-dc-proxies-on-cloud-providers/", "published_at": "2022-04-03T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812afc55a10", "title": "SMTP user enumeration for fun and profit", "url": "https://www.trickster.dev/post/smtp-user-enumeration-for-fun-and-profit/", "published_at": "2022-04-02T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b0c0d9bd", "title": "Running GUI apps within Docker containers", "url": "https://www.trickster.dev/post/running-gui-apps-within-docker-containers/", "published_at": "2022-03-26T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b1b72486", "title": "Reproducible Linux environments with Vagrant and Terraform", "url": "https://www.trickster.dev/post/reproducible-linux-environments-with-vagrant-and-terraform/", "published_at": "2022-03-25T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b1f0a008", "title": "Decrypting your own HTTPS traffic with Wireshark", "url": "https://www.trickster.dev/post/decrypting-your-own-https-traffic-with-wireshark/", "published_at": "2022-03-20T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b2634c1e", "title": "Scrapy framework architecture", "url": "https://www.trickster.dev/post/scrapy-framework-architecture/", "published_at": "2022-03-20T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b2ca63ac", "title": "How to scrape pages behind login with Python", "url": "https://www.trickster.dev/post/how-to-scrape-pages-behind-login-with-python/", "published_at": "2022-03-13T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b350d271", "title": "Using Scrapy pipelines to export scraped data", "url": "https://www.trickster.dev/post/using-scrapy-pipelines-to-export-scraped-data/", "published_at": "2022-03-13T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b3bc8b9d", "title": "How to use Scrapy Cloud", "url": "https://www.trickster.dev/post/how-to-use-scrapy-cloud/", "published_at": "2022-03-10T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b4986f91", "title": "Sending notifications programmatically: let me count the ways", "url": "https://www.trickster.dev/post/sending-notifications-programmatically/", "published_at": "2022-03-09T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b58b1559", "title": "Evaluating MS Playwright for gray hat automation", "url": "https://www.trickster.dev/post/evaluating-ms-playwright-for-gray-hat-automation/", "published_at": "2022-03-05T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b5c4a77d", "title": "Automating spreadsheet tasks with openpyxl", "url": "https://www.trickster.dev/post/automating-spreadsheet-tasks-with-openpyxl/", "published_at": "2022-02-24T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b6b6f6a1", "title": "Scrapy framework tips and tricks", "url": "https://www.trickster.dev/post/scrapy-framework-tips-and-tricks/", "published_at": "2022-02-20T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b6e0e78b", "title": "Email harvesting from Github profiles", "url": "https://www.trickster.dev/post/email-harvesting-from-github-profiles/", "published_at": "2022-02-19T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b778559a", "title": "CAPTCHA solver services for scraping and automation", "url": "https://www.trickster.dev/post/captcha-solver-services-for-scraping-and-automation/", "published_at": "2022-02-13T00:00:00+00:00" }, { "id": "01a08c58-9882-70ef-8efa-6812b7ee8163", "title": "Introduction to Scrapy framework", "url": "https://www.trickster.dev/post/introduction-to-scrapy-framework/", "published_at": "2022-02-13T00:00:00+00:00" } ] posts Claim your blog
Back to trickster.dev
Blog · corpus.blog/blogs/trickster.dev/posts

trickster.dev

trickster.dev

2025

2024

2023

2022