{"id":16571988,"url":"https://github.com/hrbrmstr/burrp","last_synced_at":"2026-02-15T22:02:11.810Z","repository":{"id":141238032,"uuid":"82415685","full_name":"hrbrmstr/burrp","owner":"hrbrmstr","description":":bookmark: Tools to Import and Process 'PortSwigger' 'Burp' Proxy Data","archived":false,"fork":false,"pushed_at":"2021-04-15T16:33:06.000Z","size":1720,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T19:31:56.322Z","etag":null,"topics":["burpsuite","har","proxy","r","r-cyber","rstats"],"latest_commit_sha":null,"homepage":null,"language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hrbrmstr.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-18T20:58:54.000Z","updated_at":"2025-03-22T11:18:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"f4912085-9ad2-4768-81ee-0a590048d612","html_url":"https://github.com/hrbrmstr/burrp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hrbrmstr/burrp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrbrmstr%2Fburrp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrbrmstr%2Fburrp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrbrmstr%2Fburrp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrbrmstr%2Fburrp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hrbrmstr","download_url":"https://codeload.github.com/hrbrmstr/burrp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrbrmstr%2Fburrp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29490360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["burpsuite","har","proxy","r","r-cyber","rstats"],"created_at":"2024-10-11T21:25:56.715Z","updated_at":"2026-02-15T22:02:11.715Z","avatar_url":"https://github.com/hrbrmstr.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput: rmarkdown::github_document\n---\n[![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/burrp.svg?branch=master)](https://travis-ci.org/hrbrmstr/burrp)\n\n`burrp` : Tools to Import and Process [PortSwigger](https://portswigger.net/) 'Burp' Proxy Data\n\nThe Burp Suite is a set of web application and security testing tools. Combined, they intercept, record and can even transform browser traffic.\n\nIt is often necessary to use an intercepting proxy server to identify targets for web-scraping. The 'PortSwigger' 'Burp' proxy records web traffic from interactive use of a browser and provides mechanisms to archive this activity to an XML file for further processing. Tools are provides to import this archive file and work with the request and response objects in a similar manner as one would with results of verb calls from functions in the 'httr' package.\n\nFor now, the solo function - `read_burp` - expects the `request` and `response` elements of a Burp XML export file to be base 64 encoded.\n\nEventually there will likely be an `as_har()` function to turn the entire structure into a `HARtools` object.\n\nTo use this package you either need to have Burp proxy export files handy, use the built-in example data file or [download Burp](https://portswigger.net/burp/) and capture some web traffic and export the data.\n\nThe current Burp proxy example capture file is of a capture from the [Bloomberg Hottest Year on Record](https://www.bloomberg.com/graphics/2014-hottest-year-on-record/) scrollytelling datavis. It's a good example of how to use Burp to capture requests as you interactively work in a browser (you can get the JSON data behind the vis this way, too).\n\nThe following functions are implemented:\n\n- `read_burp`:\tRead in a Burp proxy XML export file\n- `find_sequence`:\tFind the first occurrence (if any) of a sequence of raw bytes ('pattern') in 'buffer'\n- `extension_is`:\tFunctional helpers\n- `method_is`:\tFunctional helpers\n- `mime_is`:\tFunctional helpers\n- `port_is`:\tFunctional helpers\n- `protocol_is`:\tFunctional helpers\n- `status_is`:\tFunctional helpers\n\n### Installation\n\n```{r eval=FALSE}\ndevtools::install_github(\"hrbrmstr/burrp\")\n```\n\n```{r message=FALSE, warning=FALSE, error=FALSE, include=FALSE}\noptions(width=120)\n```\n\n### Usage\n\n```{r message=FALSE, warning=FALSE, error=FALSE, fig.height=6, fig.width=10}\nlibrary(httr)\nlibrary(burrp)\nlibrary(hrbrthemes) # github\nlibrary(tidyverse)\n\n# current verison\npackageVersion(\"burrp\")\n\nsystem.file(\"extdata\", \"hottest_year.xml\", package=\"burrp\") %\u003e%\n  read_burp() -\u003e burp_df\n\nglimpse(burp_df)\n\nburp_df$request[[3]]\n\nburp_df$response[[3]]\n\ncontent(burp_df$response[[3]], simplifyDataFrame=TRUE) %\u003e% \n  unnest() %\u003e% \n  filter(key != \"0\") %\u003e% \n  mutate(key=factor(key, levels=as.character(1:12), labels=month.abb)) %\u003e% \n  mutate(color=ifelse(year==\"2014\", \"#cb181d\", \"#b5b5b5\")) %\u003e% \n  mutate(size=ifelse(year==\"2014\", 0.5, 0.15)) %\u003e% \n  ggplot(aes(key, value, group=year, color=color, size=size)) +\n  geom_hline(yintercept = 0, size=0.2) +\n  geom_line() +\n  scale_x_discrete(expand=c(0,0)) +\n  scale_y_continuous(breaks=c(-1, 0, 1), labels=c(\"-1°F\", \"20th Century\\nAverage\", \"1°F\")) +\n  scale_color_identity() +\n  scale_size_identity() +\n  labs(x=NULL, y=NULL, title=\"Hottest year on record (2014 in red)\",\n       caption=\"Source: Bloomberg \u003chttps://www.bloomberg.com/graphics/2014-hottest-year-on-record/\u003e\") +\n  theme_ipsum_rc(grid=\"XY\", axis=\"xy\") +\n  theme(legend.position=\"none\")\n\nsummary(burp_df)\n```\n\n### Test Results\n\n```{r message=FALSE, warning=FALSE, error=FALSE}\nlibrary(burrp)\nlibrary(testthat)\n\ndate()\n\ntest_dir(\"tests/\")\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrbrmstr%2Fburrp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhrbrmstr%2Fburrp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrbrmstr%2Fburrp/lists"}