{"id":353,"date":"2021-03-03T20:20:29","date_gmt":"2021-03-03T20:20:29","guid":{"rendered":"https:\/\/www.unsafehex.com\/?p=353"},"modified":"2024-09-27T17:29:16","modified_gmt":"2024-09-27T17:29:16","slug":"periscope-web-page-sandbox-tool","status":"publish","type":"post","link":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/","title":{"rendered":"Periscope: web page sandbox tool"},"content":{"rendered":"\n<p>Last year I made a handy little tool called Periscope. It lets you sandbox a web page and see all of what happens, without any risk to your browser. Since I was giving it a little love with some updates and UI improvements recently I decided it was high time I made a post about it &#x1f60a;<\/p>\n\n\n\n<p>Periscope is a CentOS\/Red Hat targeted web app, written in NodeJS. Behind the scenes it runs an instance of Chromium (or Chrome) using the automation APIs (specifically the Puppeteer library) to drive that browser to a site of your choosing; then it records the resulting requests and responses.<\/p>\n\n\n\n<p>The core of the app is a HTTP API with options to add a new site to be sandboxed, and retrieve the results.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>> curl -XPOST http:\/\/localhost:3000\/targets\/add -H \"Content-Type: application\/json\" -d '{\"url\": \"https:\/\/httpstat.us\/418\"}'\n\n{\n  \"visit\":{\n    \"visit_id\":301,\n    \"target_id\":60,\n    \"createtime\":\"2021-01-08T19:04:02.000Z\",\n    \"time_actioned\":null,\n    \"completed\":false,\n    \"screenshot_path\":null,\n    \"status\":\"submitted\",\n    \"settings\":{\n      \"viewport\":{\n        \"width\":1903,\n        \"height\":1064,\n        \"hasTouch\":false,\n        \"isMobile\":false,\n        \"isLandscape\":true,\n        \"deviceScaleFactor\":1\n      },\n      \"userAgent\":\"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/88.0.4324.182 Safari\/537.36 Edg\/88.0.705.74\"\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>On top of this is a user interface in VueJS and Bootstrap, written to be responsive and mobile-friendly, and intuitive to use.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"653\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1-1024x653.png\" alt=\"\" data-id=\"359\" data-full-url=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1.png\" data-link=\"https:\/\/www.unsafehex.com\/?attachment_id=359\" class=\"wp-image-359\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1-1024x653.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1-300x191.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1-768x490.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1-624x398.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194825-1.png 1472w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-1024x429.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-1024x429.png\" alt=\"\" data-id=\"355\" data-link=\"https:\/\/www.unsafehex.com\/?attachment_id=355\" class=\"wp-image-355\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-1024x429.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-300x126.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-768x322.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942-624x261.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-194942.png 1383w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195103.png\"><img loading=\"lazy\" decoding=\"async\" width=\"520\" height=\"875\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195103.png\" alt=\"\" data-id=\"356\" data-link=\"https:\/\/www.unsafehex.com\/?attachment_id=356\" class=\"wp-image-356\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195103.png 520w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195103-178x300.png 178w\" sizes=\"(max-width: 520px) 100vw, 520px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-1024x318.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"318\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-1024x318.png\" alt=\"\" data-id=\"357\" data-link=\"https:\/\/www.unsafehex.com\/?attachment_id=357\" class=\"wp-image-357\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-1024x318.png 1024w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-300x93.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-768x239.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245-624x194.png 624w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195245.png 1386w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453.png\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"227\" src=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453.png\" alt=\"\" data-id=\"358\" data-link=\"https:\/\/www.unsafehex.com\/?attachment_id=358\" class=\"wp-image-358\" srcset=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453.png 902w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453-300x75.png 300w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453-768x193.png 768w, https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-195453-624x157.png 624w\" sizes=\"(max-width: 902px) 100vw, 902px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Features include:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Capturing a screenshot of the page<\/li><li>Recording all headers (names and values) in every request and response<\/li><li>Recording HTTP POST parameters<\/li><li>Storing full content of all results, downloadable by the user either individually or as a set (.tar.gz archive)<\/li><li>Indexed search of the header names and values<\/li><li>Using the Don&#8217;t FingerPrint Me extension to alert on attempts to fingerprint the browser<\/li><\/ul>\n\n\n\n<p>All of this lovely stuff is available for free (MIT license) <a href=\"https:\/\/github.com\/scherma\/periscope\" target=\"_blank\" rel=\"noreferrer noopener\">on GitHub<\/a>. Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Periscope lets you sandbox a web page and see all of what happens, without any risk to your browser.<\/p>\n","protected":false},"author":1,"featured_media":360,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,52],"tags":[53,102],"class_list":["post-353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-sandboxing","tag-sandbox","tag-url"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Periscope: web page sandbox tool &#8211; unsafehex<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Periscope: web page sandbox tool &#8211; unsafehex\" \/>\n<meta property=\"og:description\" content=\"Periscope lets you sandbox a web page and see all of what happens, without any risk to your browser.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/\" \/>\n<meta property=\"og:site_name\" content=\"unsafehex\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-03T20:20:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-27T17:29:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-200741.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1381\" \/>\n\t<meta property=\"og:image:height\" content=\"616\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"http_error_418\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:site\" content=\"@http_error_418\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"http_error_418\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/\",\"url\":\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/\",\"name\":\"Periscope: web page sandbox tool &#8211; unsafehex\",\"isPartOf\":{\"@id\":\"https:\/\/www.unsafehex.com\/#website\"},\"datePublished\":\"2021-03-03T20:20:29+00:00\",\"dateModified\":\"2024-09-27T17:29:16+00:00\",\"author\":{\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.unsafehex.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Periscope: web page sandbox tool\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.unsafehex.com\/#website\",\"url\":\"https:\/\/www.unsafehex.com\/\",\"name\":\"unsafehex\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.unsafehex.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652\",\"name\":\"http_error_418\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g\",\"caption\":\"http_error_418\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Periscope: web page sandbox tool &#8211; unsafehex","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/","og_locale":"en_GB","og_type":"article","og_title":"Periscope: web page sandbox tool &#8211; unsafehex","og_description":"Periscope lets you sandbox a web page and see all of what happens, without any risk to your browser.","og_url":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/","og_site_name":"unsafehex","article_published_time":"2021-03-03T20:20:29+00:00","article_modified_time":"2024-09-27T17:29:16+00:00","og_image":[{"width":1381,"height":616,"url":"https:\/\/www.unsafehex.com\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-03-200741.png","type":"image\/png"}],"author":"http_error_418","twitter_card":"summary_large_image","twitter_creator":"@http_error_418","twitter_site":"@http_error_418","twitter_misc":{"Written by":"http_error_418","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/","url":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/","name":"Periscope: web page sandbox tool &#8211; unsafehex","isPartOf":{"@id":"https:\/\/www.unsafehex.com\/#website"},"datePublished":"2021-03-03T20:20:29+00:00","dateModified":"2024-09-27T17:29:16+00:00","author":{"@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652"},"breadcrumb":{"@id":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.unsafehex.com\/index.php\/2021\/03\/03\/periscope-web-page-sandbox-tool\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.unsafehex.com\/"},{"@type":"ListItem","position":2,"name":"Periscope: web page sandbox tool"}]},{"@type":"WebSite","@id":"https:\/\/www.unsafehex.com\/#website","url":"https:\/\/www.unsafehex.com\/","name":"unsafehex","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.unsafehex.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/69a7fc817171b5a3c4770875a1918652","name":"http_error_418","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.unsafehex.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe9a4cdd9d9f058529884ce588767baf?s=96&d=mm&r=g","caption":"http_error_418"}}]}},"_links":{"self":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/353"}],"collection":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/comments?post=353"}],"version-history":[{"count":1,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/353\/revisions"}],"predecessor-version":[{"id":361,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/posts\/353\/revisions\/361"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/media\/360"}],"wp:attachment":[{"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/media?parent=353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/categories?post=353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unsafehex.com\/index.php\/wp-json\/wp\/v2\/tags?post=353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}