Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

cfhttr

Workaround Cloudflare Anti-DDoS Protection

Description

Some sites use Cloudflare’s anti-DDoS protection to, well, avoid being DDoS’d.

However, many of these sites also host files that they intended for automated download workflows and often forget to exclude those from the heavy-handed anti-DDoS, javascript + human-required settings.

Cloudflare employs a few different anti-DDoS protection schemes. One involves a 503 HTTP response followed by the submission of a “challenge” that was solved via a bit of javascript on the page. That’s what this pacakge handles. If you encounter other Cloudflare anti-DDoS protection schemes (especially the captcha one), then this won’t work.

NOTE

If this ceases to work it likely means that Cloudflare changed the challenge code. Please file an issue so I can redo the workaround.

What’s Inside The Tin

The following functions are implemented:

  • cf_GET: Cloudflare bypass version of httr::GET()

Installation

devtools::install_github("hrbrmstr/cfhttr")

Usage

library(cfhttr)
# current verison
packageVersion("cfhttr")
## [1] '0.1.0'
res<- cf_GET("https://www.bitmarket.pl/graphs/BTCPLN/90m.json")
## Waiting 5 seconds...
str(httr::content(res, as="parsed"))
## List of 90
## $ :List of 6
## ..$ time : int 1512908160
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00124821"
## $ :List of 6
## ..$ time : int 1512908220
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908280
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908340
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01757887"
## $ :List of 6
## ..$ time : int 1512908400
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.09891712"
## $ :List of 6
## ..$ time : int 1512908460
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48100.00000000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48100.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512908520
## ..$ open : chr "48100.00000000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48100.00000000"
## ..$ close: chr "48308.22960000"
## ..$ vol : chr "0.01972749"
## $ :List of 6
## ..$ time : int 1512908580
## ..$ open : chr "48308.22960000"
## ..$ high : chr "48308.22960000"
## ..$ low : chr "48000.00000000"
## ..$ close: chr "48000.00000000"
## ..$ vol : chr "0.01555715"
## $ :List of 6
## ..$ time : int 1512908640
## ..$ open : chr "48000.00000000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "47700.00000000"
## ..$ close: chr "48149.99960000"
## ..$ vol : chr "0.26652673"
## $ :List of 6
## ..$ time : int 1512908700
## ..$ open : chr "48149.99960000"
## ..$ high : chr "48149.99960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02755044"
## $ :List of 6
## ..$ time : int 1512908760
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48149.98960000"
## ..$ close: chr "48149.98960000"
## ..$ vol : chr "0.02202285"
## $ :List of 6
## ..$ time : int 1512908820
## ..$ open : chr "48149.98960000"
## ..$ high : chr "48149.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03115266"
## $ :List of 6
## ..$ time : int 1512908880
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.05214570"
## $ :List of 6
## ..$ time : int 1512908940
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909000
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48145.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48145.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909060
## ..$ open : chr "48145.00000000"
## ..$ high : chr "48152.00000000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48152.00000000"
## ..$ vol : chr "0.14385430"
## $ :List of 6
## ..$ time : int 1512909120
## ..$ open : chr "48152.00000000"
## ..$ high : chr "48200.00000000"
## ..$ low : chr "48152.00000000"
## ..$ close: chr "48200.00000000"
## ..$ vol : chr "0.05931535"
## $ :List of 6
## ..$ time : int 1512909180
## ..$ open : chr "48200.00000000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48200.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.02196575"
## $ :List of 6
## ..$ time : int 1512909240
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48145.00000000"
## ..$ close: chr "48287.99960000"
## ..$ vol : chr "0.84227748"
## $ :List of 6
## ..$ time : int 1512909300
## ..$ open : chr "48287.99960000"
## ..$ high : chr "48287.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.01528501"
## $ :List of 6
## ..$ time : int 1512909360
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "47633.00040000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.38813920"
## $ :List of 6
## ..$ time : int 1512909420
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48287.98960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.03962696"
## $ :List of 6
## ..$ time : int 1512909480
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48144.99960000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48144.99960000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909540
## ..$ open : chr "48144.99960000"
## ..$ high : chr "48308.24000000"
## ..$ low : chr "48144.99960000"
## ..$ close: chr "48308.24000000"
## ..$ vol : chr "0.24594488"
## $ :List of 6
## ..$ time : int 1512909600
## ..$ open : chr "48308.24000000"
## ..$ high : chr "48388.25000000"
## ..$ low : chr "48308.24000000"
## ..$ close: chr "48388.25000000"
## ..$ vol : chr "2.45037261"
## $ :List of 6
## ..$ time : int 1512909660
## ..$ open : chr "48388.25000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48388.25000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.02294538"
## $ :List of 6
## ..$ time : int 1512909720
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512909780
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00393802"
## $ :List of 6
## ..$ time : int 1512909840
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48309.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00980329"
## $ :List of 6
## ..$ time : int 1512909900
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48400.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48400.00000000"
## ..$ vol : chr "0.00303943"
## $ :List of 6
## ..$ time : int 1512909960
## ..$ open : chr "48400.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48400.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.04130911"
## $ :List of 6
## ..$ time : int 1512910020
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00600141"
## $ :List of 6
## ..$ time : int 1512910080
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48422.00000000"
## ..$ close: chr "48422.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910140
## ..$ open : chr "48422.00000000"
## ..$ high : chr "48422.00000000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00206979"
## $ :List of 6
## ..$ time : int 1512910200
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48350.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48350.00040000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910260
## ..$ open : chr "48350.00040000"
## ..$ high : chr "48351.00040000"
## ..$ low : chr "48350.00040000"
## ..$ close: chr "48351.00040000"
## ..$ vol : chr "0.01231852"
## $ :List of 6
## ..$ time : int 1512910320
## ..$ open : chr "48351.00040000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48351.00040000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "1.08695121"
## $ :List of 6
## ..$ time : int 1512910380
## ..$ open : chr "48500.00000000"
## ..$ high : chr "48500.00000000"
## ..$ low : chr "48401.00000000"
## ..$ close: chr "48500.00000000"
## ..$ vol : chr "0.18221694"
## $ :List of 6
## ..$ time : int 1512910440
## ..$ open : chr "48500.00000000"
## ..$ high : chr "49196.40000000"
## ..$ low : chr "48500.00000000"
## ..$ close: chr "48600.00000000"
## ..$ vol : chr "2.59367364"
## $ :List of 6
## ..$ time : int 1512910500
## ..$ open : chr "48600.00000000"
## ..$ high : chr "49249.18000000"
## ..$ low : chr "48600.00000000"
## ..$ close: chr "49249.18000000"
## ..$ vol : chr "4.06697086"
## $ :List of 6
## ..$ time : int 1512910560
## ..$ open : chr "49249.18000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49217.94000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "2.35015523"
## $ :List of 6
## ..$ time : int 1512910620
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910680
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910740
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49500.00000000"
## ..$ close: chr "49500.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512910800
## ..$ open : chr "49500.00000000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.00700000"
## $ :List of 6
## ..$ time : int 1512910860
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "48568.51000000"
## ..$ vol : chr "0.10409977"
## $ :List of 6
## ..$ time : int 1512910920
## ..$ open : chr "48568.51000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48568.51000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00876630"
## $ :List of 6
## ..$ time : int 1512910980
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911040
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911100
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "49000.00000000"
## ..$ close: chr "49000.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911160
## ..$ open : chr "49000.00000000"
## ..$ high : chr "49000.00000000"
## ..$ low : chr "48601.00040000"
## ..$ close: chr "48997.99790000"
## ..$ vol : chr "0.11534381"
## $ :List of 6
## ..$ time : int 1512911220
## ..$ open : chr "48997.99790000"
## ..$ high : chr "49000.00010000"
## ..$ low : chr "48997.99780000"
## ..$ close: chr "49000.00010000"
## ..$ vol : chr "0.01923370"
## $ :List of 6
## ..$ time : int 1512911280
## ..$ open : chr "49000.00010000"
## ..$ high : chr "49500.00000000"
## ..$ low : chr "49000.00010000"
## ..$ close: chr "49479.99890000"
## ..$ vol : chr "0.71785275"
## $ :List of 6
## ..$ time : int 1512911340
## ..$ open : chr "49479.99890000"
## ..$ high : chr "49499.99000000"
## ..$ low : chr "49400.00000000"
## ..$ close: chr "49499.97960000"
## ..$ vol : chr "0.11959698"
## $ :List of 6
## ..$ time : int 1512911400
## ..$ open : chr "49499.97960000"
## ..$ high : chr "49499.97960000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.05980584"
## $ :List of 6
## ..$ time : int 1512911460
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911520
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49226.54000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49226.54000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512911580
## ..$ open : chr "49226.54000000"
## ..$ high : chr "49281.46000000"
## ..$ low : chr "49226.54000000"
## ..$ close: chr "49281.46000000"
## ..$ vol : chr "0.02925124"
## $ :List of 6
## ..$ time : int 1512911640
## ..$ open : chr "49281.46000000"
## ..$ high : chr "49499.98000000"
## ..$ low : chr "49281.46000000"
## ..$ close: chr "49397.84040000"
## ..$ vol : chr "0.13054768"
## $ :List of 6
## ..$ time : int 1512911700
## ..$ open : chr "49397.84040000"
## ..$ high : chr "49550.00000000"
## ..$ low : chr "49397.84040000"
## ..$ close: chr "49550.00000000"
## ..$ vol : chr "1.19534515"
## $ :List of 6
## ..$ time : int 1512911760
## ..$ open : chr "49550.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49550.00000000"
## ..$ close: chr "50101.00000000"
## ..$ vol : chr "5.57556584"
## $ :List of 6
## ..$ time : int 1512911820
## ..$ open : chr "50101.00000000"
## ..$ high : chr "50101.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49575.45000000"
## ..$ vol : chr "0.14549902"
## $ :List of 6
## ..$ time : int 1512911880
## ..$ open : chr "49575.45000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49575.45000000"
## ..$ close: chr "49899.00000000"
## ..$ vol : chr "0.04075380"
## $ :List of 6
## ..$ time : int 1512911940
## ..$ open : chr "49899.00000000"
## ..$ high : chr "49899.00000000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49602.00000000"
## ..$ vol : chr "0.00402226"
## $ :List of 6
## ..$ time : int 1512912000
## ..$ open : chr "49602.00000000"
## ..$ high : chr "49898.99990000"
## ..$ low : chr "49602.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.07934697"
## $ :List of 6
## ..$ time : int 1512912060
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912120
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00956827"
## $ :List of 6
## ..$ time : int 1512912180
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.03320662"
## $ :List of 6
## ..$ time : int 1512912240
## ..$ open : chr "49800.00000000"
## ..$ high : chr "49800.00000000"
## ..$ low : chr "49800.00000000"
## ..$ close: chr "49800.00000000"
## ..$ vol : chr "0.00000000"
## $ :List of 6
## ..$ time : int 1512912300
## ..$ open : chr "49800.00000000"
## ..$ high : chr "50000.00000000"
## ..$ low : chr "49615.72040000"
## ..$ close: chr "50000.00000000"
## ..$ vol : chr "1.08394998"
## $ :List of 6
## ..$ time : int 1512912360
## ..$ open : chr "50000.00000000"
## ..$ high : chr "50151.07000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50151.07000000"
## ..$ vol : chr "2.51657327"
## $ :List of 6
## ..$ time : int 1512912420
## ..$ open : chr "50151.07000000"
## ..$ high : chr "50280.00000000"
## ..$ low : chr "50000.00000000"
## ..$ close: chr "50280.00000000"
## ..$ vol : chr "1.24144728"
## $ :List of 6
## ..$ time : int 1512912480
## ..$ open : chr "50280.00000000"
## ..$ high : chr "50316.00000000"
## ..$ low : chr "50280.00000000"
## ..$ close: chr "50316.00000000"
## ..$ vol : chr "0.25556483"
## $ :List of 6
## ..$ time : int 1512912540
## ..$ open : chr "50316.00000000"
## ..$ high : chr "50499.69860000"
## ..$ low : chr "50062.05040000"
## ..$ close: chr "50499.69860000"
## ..$ vol : chr "1.33295472"
## $ :List of 6
## ..$ time : int 1512912600
## ..$ open : chr "50499.69860000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50499.69860000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.34136011"
## $ :List of 6
## ..$ time : int 1512912660
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48320000"
## ..$ close: chr "50503.48320000"
## ..$ vol : chr "0.02625000"
## $ :List of 6
## ..$ time : int 1512912720
## ..$ open : chr "50503.48320000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50300.00050000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.11206182"
## $ :List of 6
## ..$ time : int 1512912780
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50503.48360000"
## ..$ low : chr "50503.48360000"
## ..$ close: chr "50503.48360000"
## ..$ vol : chr "0.52227081"
## $ :List of 6
## ..$ time : int 1512912840
## ..$ open : chr "50503.48360000"
## ..$ high : chr "50690.90000000"
## ..$ low : chr "50350.00010000"
## ..$ close: chr "50690.90000000"
## ..$ vol : chr "1.52948553"
## $ :List of 6
## ..$ time : int 1512912900
## ..$ open : chr "50690.90000000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50690.90000000"
## ..$ close: chr "50813.91050000"
## ..$ vol : chr "0.75597156"
## $ :List of 6
## ..$ time : int 1512912960
## ..$ open : chr "50813.91050000"
## ..$ high : chr "50813.91050000"
## ..$ low : chr "50800.00000000"
## ..$ close: chr "50812.00000000"
## ..$ vol : chr "0.49405439"
## $ :List of 6
## ..$ time : int 1512913020
## ..$ open : chr "50812.00000000"
## ..$ high : chr "50908.24350000"
## ..$ low : chr "50812.00000000"
## ..$ close: chr "50894.51000000"
## ..$ vol : chr "1.85312042"
## $ :List of 6
## ..$ time : int 1512913080
## ..$ open : chr "50894.51000000"
## ..$ high : chr "50894.51000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50620.00010000"
## ..$ vol : chr "0.00100000"
## $ :List of 6
## ..$ time : int 1512913140
## ..$ open : chr "50620.00010000"
## ..$ high : chr "50997.00000000"
## ..$ low : chr "50620.00010000"
## ..$ close: chr "50997.00000000"
## ..$ vol : chr "2.76298135"
## $ :List of 6
## ..$ time : int 1512913200
## ..$ open : chr "50997.00000000"
## ..$ high : chr "50999.00000000"
## ..$ low : chr "50997.00000000"
## ..$ close: chr "50999.00000000"
## ..$ vol : chr "0.22308001"
## $ :List of 6
## ..$ time : int 1512913260
## ..$ open : chr "50999.00000000"
## ..$ high : chr "51228.31820000"
## ..$ low : chr "50999.00000000"
## ..$ close: chr "51228.31820000"
## ..$ vol : chr "1.17797930"
## $ :List of 6
## ..$ time : int 1512913320
## ..$ open : chr "51228.31820000"
## ..$ high : chr "51300.00000000"
## ..$ low : chr "51228.31820000"
## ..$ close: chr "51300.00000000"
## ..$ vol : chr "0.49172758"
## $ :List of 6
## ..$ time : int 1512913380
## ..$ open : chr "51300.00000000"
## ..$ high : chr "51344.22730000"
## ..$ low : chr "51200.00000000"
## ..$ close: chr "51230.00000000"
## ..$ vol : chr "1.71567939"
## $ :List of 6
## ..$ time : int 1512913440
## ..$ open : chr "51230.00000000"
## ..$ high : chr "51230.00000000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49835.94170000"
## ..$ vol : chr "1.13497735"
## $ :List of 6
## ..$ time : int 1512913500
## ..$ open : chr "49835.94170000"
## ..$ high : chr "49846.00040000"
## ..$ low : chr "49835.94170000"
## ..$ close: chr "49846.00040000"
## ..$ vol : chr "0.42709102"

About

👷 Workaround Cloudflare Anti-DDoS Protection

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages