

{"id":7466,"date":"2017-12-10T09:20:35","date_gmt":"2017-12-10T14:20:35","guid":{"rendered":"https:\/\/rud.is\/b\/?p=7466"},"modified":"2018-03-07T16:53:27","modified_gmt":"2018-03-07T21:53:27","slug":"a-workaround-for-when-anti-ddos-also-means-anti-data","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/","title":{"rendered":"A Workaround For When Anti-DDoS Also Means Anti-Data"},"content":{"rendered":"<p>More sites are turning to services like Cloudflare due to just how stupid-easy it is to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Denial-of-service_attack\">DDoS<\/a> &#8212; perform a (possibly Distributed) Denial of Service attack on &#8212; a site. Sometimes the DDoS is intentional (malicious). Sometimes it&#8217;s because <em>your<\/em> bot didn&#8217;t play nice (stop that, btw). Sadly, at some point, most of us with &#8220;vital&#8221; sites are going to have to pay protection money to one of these services unless law enforcement or ISPs do a better job stopping DDoS (killing the plethora of pwnd IoT devices that make up one of the largest for-rent DDoS services out there would be a good start).<\/p>\n<p>Soapbox aside, sites like this one &#8212; <a href=\"https:\/\/www.bitmarket.pl\/docs.php?file=api_public.html\">https:\/\/www.bitmarket.pl\/docs.php?file=api_public.html<\/a> &#8212; (which was giving an SO poster trouble) have DDoS protection enabled <em>but<\/em> they also want you to be able to automate the downloads (this one even calls it an &#8220;API&#8221;). However, try to grab one of the files there with your browser and you&#8217;ll likely see a Cloudflare interstitial page which eventually gets you the data.<\/p>\n<p>Try the same thing with <code>download.file()<\/code> or <code>httr::GET()<\/code> and you&#8217;ll run into trouble since neither of those two functions have a way to perform the javascript challenge execution which ultimately is posted (well, GETted in this case) to a checker endpoint which eventually redirects to the original URL with enough ??? to ensure you won&#8217;t be bothered again.<\/p>\n<p>Cloudflare has captcha and other types of interstitials, but if you happen on the 503+javascript challenge one, have I got a package for you! Meet: <a href=\"https:\/\/github.com\/hrbrmstr\/cfhttr\"><code>cfhttr<\/code>?<\/a>.<\/p>\n<p>The singular function (for now) &#8212;\u00a0<code>cf_GET()<\/code> &#8212; does the following:<\/p>\n<ul>\n<li>Makes an <code>httr::GET()<\/code> call with the initial URL<\/li>\n<li>Checks to ensure it&#8217;s both on Cloudflare and is using the javascript challenge protection scheme<\/li>\n<li>Slices the javascript and tweaks it enough to enable running it in <code>V8<\/code><\/li>\n<li>Retrieves the challenge computation from <code>V8<\/code><\/li>\n<li>Posts (well, <code>httr::GET()<\/code>s it since that&#8217;s what Cloudflare expects) the challenge form with the proper <code>Referer<\/code> header and hopefully passes the test so you get your content.<\/li>\n<\/ul>\n<pre id=\"cfhttr01\"><code class=\"language-r\">devtools::install_github(&quot;hrbrmstr\/cfhttr&quot;)\r\n\r\nlibrary(cfhttr)\r\n\r\nres &lt;- cf_GET(&quot;https:\/\/www.bitmarket.pl\/graphs\/BTCPLN\/90m.json&quot;)\r\n## Waiting 5 seconds...\r\n\r\nstr(httr::content(res, as=&quot;parsed&quot;))\r\n## List of 90\r\n##  $ :List of 6\r\n##   ..$ time : int 1512908160\r\n##   ..$ open : chr &quot;48000.00000000&quot;\r\n##   ..$ high : chr &quot;48100.00000000&quot;\r\n##   ..$ low  : chr &quot;48000.00000000&quot;\r\n##   ..$ close: chr &quot;48100.00000000&quot;\r\n##   ..$ vol  : chr &quot;0.00124821&quot;\r\n##  $ :List of 6\r\n##   ..$ time : int 1512908220\r\n##   ..$ open : chr &quot;48100.00000000&quot;\r\n##   ..$ high : chr &quot;48100.00000000&quot;\r\n##   ..$ low  : chr &quot;48100.00000000&quot;\r\n##   ..$ close: chr &quot;48100.00000000&quot;\r\n##   ..$ vol  : chr &quot;0.00000000&quot;\r\n##  $ :List of 6\r\n##   ..$ time : int 1512908280\r\n##   ..$ open : chr &quot;48100.00000000&quot;\r\n##   ..$ high : chr &quot;48100.00000000&quot;\r\n##   ..$ low  : chr &quot;48100.00000000&quot;\r\n##   ..$ close: chr &quot;48100.00000000&quot;\r\n##   ..$ vol  : chr &quot;0.00000000&quot;\r\n## ...<\/code><\/pre>\n<h2>FIN<\/h2>\n<p>If you end up using this in workflows and run into a problem, it likely means that Cloudflare changed the challenge code page. Please <a href=\"https:\/\/github.com\/hrbrmstr\/cfhttr\/issues\">file an issue<\/a> so I can update the code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>More sites are turning to services like Cloudflare due to just how stupid-easy it is to DDoS &#8212; perform a (possibly Distributed) Denial of Service attack on &#8212; a site. Sometimes the DDoS is intentional (malicious). Sometimes it&#8217;s because your bot didn&#8217;t play nice (stop that, btw). Sadly, at some point, most of us with [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[91],"tags":[810],"class_list":["post-7466","post","type-post","status-publish","format-standard","hentry","category-r","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is\" \/>\n<meta property=\"og:description\" content=\"More sites are turning to services like Cloudflare due to just how stupid-easy it is to DDoS &#8212; perform a (possibly Distributed) Denial of Service attack on &#8212; a site. Sometimes the DDoS is intentional (malicious). Sometimes it&#8217;s because your bot didn&#8217;t play nice (stop that, btw). Sadly, at some point, most of us with [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-10T14:20:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-07T21:53:27+00:00\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"A Workaround For When Anti-DDoS Also Means Anti-Data\",\"datePublished\":\"2017-12-10T14:20:35+00:00\",\"dateModified\":\"2018-03-07T21:53:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/\"},\"wordCount\":388,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"keywords\":[\"post\"],\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/\",\"name\":\"A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"datePublished\":\"2017-12-10T14:20:35+00:00\",\"dateModified\":\"2018-03-07T21:53:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/12\\\/10\\\/a-workaround-for-when-anti-ddos-also-means-anti-data\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Workaround For When Anti-DDoS Also Means Anti-Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/","og_locale":"en_US","og_type":"article","og_title":"A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is","og_description":"More sites are turning to services like Cloudflare due to just how stupid-easy it is to DDoS &#8212; perform a (possibly Distributed) Denial of Service attack on &#8212; a site. Sometimes the DDoS is intentional (malicious). Sometimes it&#8217;s because your bot didn&#8217;t play nice (stop that, btw). Sadly, at some point, most of us with [&hellip;]","og_url":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/","og_site_name":"rud.is","article_published_time":"2017-12-10T14:20:35+00:00","article_modified_time":"2018-03-07T21:53:27+00:00","author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"A Workaround For When Anti-DDoS Also Means Anti-Data","datePublished":"2017-12-10T14:20:35+00:00","dateModified":"2018-03-07T21:53:27+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/"},"wordCount":388,"commentCount":2,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"keywords":["post"],"articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/","url":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/","name":"A Workaround For When Anti-DDoS Also Means Anti-Data - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"datePublished":"2017-12-10T14:20:35+00:00","dateModified":"2018-03-07T21:53:27+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2017\/12\/10\/a-workaround-for-when-anti-ddos-also-means-anti-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"A Workaround For When Anti-DDoS Also Means Anti-Data"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-1Wq","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":24570,"url":"https:\/\/rud.is\/b\/2025\/03\/11\/xitter-hit-by-major-cyberattack\/","url_meta":{"origin":7466,"position":0},"title":"Xitter Hit by Major Cyberattack","author":"hrbrmstr","date":"2025-03-11","format":false,"excerpt":"On March 10, 2025, Xitter experienced major service disruptions throughout the day. Users couldn't access the platform on both mobile apps and the website. Here's what happened and why it matters. What Happened? X suffered multiple waves of outages starting early Monday morning: First wave: Around 6:00 AM Eastern Time,\u2026","rel":"","context":"In &quot;Commentary&quot;","block_context":{"text":"Commentary","link":"https:\/\/rud.is\/b\/category\/commentary\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3,"url":"https:\/\/rud.is\/b\/2011\/02\/07\/quick-hits-2011-01-07\/","url_meta":{"origin":7466,"position":1},"title":"Quick Hits :: 2011-01-07","author":"hrbrmstr","date":"2011-02-07","format":false,"excerpt":"Security Smart Servers spot & block botnet attacks [NewScientist] Passwords are *so* 2010 - Building the ultimate bad arse CUDA cracking server\u2026 [SecManiac] Programming Interesting points\/counterpoints on the efficacy of Node.js being tied so closely to the V8 javascript engine: NodeJS: To V8 or not to V8 [bruno fernandez-ruiz] On\u2026","rel":"","context":"In &quot;HTML5&quot;","block_context":{"text":"HTML5","link":"https:\/\/rud.is\/b\/category\/html5\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2399,"url":"https:\/\/rud.is\/b\/2013\/03\/27\/a-wish-for-snow-in-spring\/","url_meta":{"origin":7466,"position":2},"title":"A Wish for Snow in Spring","author":"hrbrmstr","date":"2013-03-27","format":false,"excerpt":"The basic technique of cybercrime statistics\u2014measuring the incidence of a given phenomenon (DDoS, trojan, APT) as a percentage of overall population size\u2014had entered the mainstream of cybersecurity thought only in the previous decade. Cybersecurity as a science was still in its infancy, as many of its basic principles had yet\u2026","rel":"","context":"In &quot;Breach&quot;","block_context":{"text":"Breach","link":"https:\/\/rud.is\/b\/category\/breach\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10284,"url":"https:\/\/rud.is\/b\/2018\/05\/16\/ripe-76-selected-talks\/","url_meta":{"origin":7466,"position":3},"title":"RIPE 76 Selected Talks","author":"hrbrmstr","date":"2018-05-16","format":false,"excerpt":"RIPE 76 is going on this week and --- as usual --- there are scads of great talks. The selected ones below are just my (slightly) thinner slice at what may have broader appeal outside pure networking circles. Do not read anything more into the order than the end-number of\u2026","rel":"","context":"In &quot;Cybersecurity&quot;","block_context":{"text":"Cybersecurity","link":"https:\/\/rud.is\/b\/category\/cybersecurity\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":8416,"url":"https:\/\/rud.is\/b\/2018\/03\/07\/handling-semantic-version-string-like-a-boss-with-the-semver-package\/","url_meta":{"origin":7466,"position":4},"title":"Handling Semantic Version Strings Like a Boss with the semver Package","author":"hrbrmstr","date":"2018-03-07","format":false,"excerpt":"I work with internet-scale data and do my fair share of macro-analyses on vulnerabilities. I use the R semver package for most of my work and wanted to blather on a bit about it since it's super-helpful for this work and doesn't get the attention it deserves. semver makes it\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/03\/unnamed-chunk-6-1.png?fit=1200%2C480&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/03\/unnamed-chunk-6-1.png?fit=1200%2C480&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/03\/unnamed-chunk-6-1.png?fit=1200%2C480&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/03\/unnamed-chunk-6-1.png?fit=1200%2C480&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/03\/unnamed-chunk-6-1.png?fit=1200%2C480&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":187,"url":"https:\/\/rud.is\/b\/2011\/02\/23\/herding-firesheep\/","url_meta":{"origin":7466,"position":5},"title":"Herding [Fire]sheep","author":"hrbrmstr","date":"2011-02-23","format":false,"excerpt":"By now, many non-IT and non-Security folk have heard of Firesheep, a tool written by @codebutler which allows anyone using Firefox on unprotected networks to capture and hjijack active sessions to popular social media sites (and other web sites). The sidebar\/extension puts an attactive and easy-to-understand GUI over a process\u2026","rel":"","context":"In &quot;Information Security&quot;","block_context":{"text":"Information Security","link":"https:\/\/rud.is\/b\/category\/information-security\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/7466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=7466"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/7466\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=7466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=7466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=7466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}