Example Request
Here is an example query.
In this example we send a simple query to access https://search.censys.io/
using the Website Unblocker without custom options:
curl -x username:password@unblocker.netnut.io:5959 -k https://search.censys.io/
Upon successful execution of this command, the output will be the HTML content or any relevant response from https://search.censys.io/
.
The following example showcases the Website Unblocker's capability to bypass restrictions and access the content of the specified URL.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>Censys Search</title>
<meta name="description" content="Censys helps organizations, individuals, and researchers find and monitor every server on the Internet to reduce exposure and improve security.">
<link rel="shortcut icon" href="https://search.censys.io/static/img/favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" sizes="180x180" href="https://search.censys.io/static/img/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://search.censys.io/static/img/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://search.censys.io/static/img/favicon-16x16.png">
<link rel="icon" href="https://search.censys.io/static/img/icon.png" />
<link rel="manifest" href="https://search.censys.io/static/site.webmanifest">
<link rel="mask-icon" href="https://search.censys.io/static/img/safari-pinned-tab.svg" color="#ff7a37">
<meta name="msapplication-TileColor" content="#ff7a37">
<meta name="msapplication-TileImage" content="https://search.censys.io/static/img/mstile-150x150.png">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" charset="utf-8" href="https://search.censys.io/static/css/bootstrap.min.css" />
<link rel="stylesheet" charset="utf-8" href="https://search.censys.io/static/css/material-kit.min.css" />
<link rel="stylesheet" charset="utf-8" href="https://search.censys.io/static/css/custom.css?version=94d5177f749a79b3078bdf11246465ad" />
<link rel="stylesheet" charset="utf-8" href="https://search.censys.io/static/css/marketing/footer.css" />
<link rel="stylesheet" charset="utf-8" href="https://search.censys.io/static/css/app/footer-light.css" />
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&family=Roboto+Mono:wght@400;500&family=Roboto:wght@400;500;700&family=Titillium+Web:wght@400;700&family=Material+Icons&display=swap">
<link rel="preload" as="font" type="font/woff2" crossorigin href="https://unpkg.com/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0" />
<link rel="preload" as="style" href="https://unpkg.com/font-awesome@4.7.0/css/font-awesome.min.css" onload="this.rel='stylesheet'" /><link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.4.0/styles/github.min.css">
<style>
body {
padding-bottom: 0;
}
body, #content {
background-color: #F6F7F9 !important;
}
#app-announcement ~ #content {
padding-top: 55px;
}
footer {
background-color: white;
}
#inner-content {
height: 100%;
text-align: center;
display: flex;
justify-content: center;
flex: 0 1 auto;
/* Height of the Footer */
padding-bottom: 157px;
}
#inner-content .row {
min-width: 425px;
width: 85%;
max-width: 750px;
padding-left: 2rem;
padding-right: 2rem;
}
.details {
margin: 2.5rem 0 auto;
color: #4D5358;
text-shadow: 1px 1px .2px rgba(255, 159, 113, 0.05);
}
.details span {
white-space: nowrap;
padding: 0 10px;
}
.details span .fa {
margin-right: 5px;
}
.landing-logo {
width: 350px;
margin-bottom: 9rem;
}
.landing-buttons {
margin-top: 2rem;
display: flex;
justify-content: center;
flex-wrap: wrap;
flex-direction: row;
}
.landing-buttons a {
margin-left: .5rem;
margin-right: .5rem;
}
.landing-buttons a.btn.btn-info {
background-color: white !important;
border: #C1C5CB 1px solid !important;
color: #333 !important;
box-shadow: none !important;
}
.landing-buttons a.btn.btn-info:hover {
background-color: #F6F7F9 !important;
border: #252B36 1px solid !important;
color: #252B36 !important;
transition: none !important;
}
.landing-buttons a.btn.btn-info:active {
background-color: white !important;
}
.landing-buttons i.fa {
padding-right: 10px;
font-size: 16px;
}
/* Try to Wrangle Searchbar */
.NavBar {
background-color: inherit;
position: relative;
}
.NavBar__search-boxes-both {
margin: 0;
}
.NavBar--fixed-top {
border-bottom: 0;
}
.NavBar__container {
flex-direction: row-reverse;
}
@media (max-width: 767px) {
.NavBar__search-form {
margin: 0;
}
.landing-logo {
width: 300px;
}
.row {
width: 100%;
min-width: unset;
padding-left: 0;
padding-right: 0;
}
}
#changelog-preview {
position: absolute;
bottom: 64px;
width: 100%;
text-align: left;
border-top: 1px solid var(--neutral-grey-7);
border-bottom: 1px solid var(--neutral-grey-7);
padding-top: 10px;
padding-bottom: 10px;
}
</style>
<meta property="og:type" content="website" />
<meta property="og:locale" content="en_US">
<meta property="og:title" content="Censys Search" />
<meta property="og:description" content="Censys helps organizations, individuals, and researchers find and monitor every server on the Internet to reduce exposure and improve security." />
<meta property="og:url" content="https://search.censys.io/" />
<meta property="og:site_name" content="Censys" />
<meta property="og:image" content="https://search.censys.io/static/img/censys-small.png" />
<meta property="og:image:height" content="100" />
<meta property="og:image:width" content="100" />
<meta property="og:image" content="https://search.censys.io/static/img/icon.png" />
<meta property="og:image:height" content="400" />
<meta property="og:image:width" content="400" />
<meta property="og:image" content="https://search.censys.io/static/img/censys.png" />
<meta property="og:image:height" content="480" />
<meta property="og:image:width" content="1600" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@censysio" />
<meta name="twitter:image" content="https://search.censys.io/static/img/icon.png" />
<meta name="twitter:image:alt" content="Censys Logo" />
<link rel="search" href="https://search.censys.io/static/xml/search.xml" type="application/opensearchdescription+xml" title="Censys">
<script src="https://unpkg.com/jquery@3.6.0/dist/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="https://search.censys.io/static/js/jquery.min.js"><\/script>');
</script>
</head>
<body>
<div id="app-announcement">
<div class="container container-announcement">
<div class="row">
<div class="col-xs-10">
<strong>Happy Holidays from Censys!</strong>
<span>Save 30% on annual Censys Search Teams and Solo subscriptions with code <code>HappyHolidays23</code>
</div>
<div class="col-xs-2 text-right large">
<strong><a href="https://search.censys.io/subscriptions?annual_coupon=HappyHolidays23">Get 30% off <span class="fa fa-long-arrow-right"></span></a></strong>
</div>
</div>
</div>
</div>
<nav class="NavBar NavBar--fixed-top navbar-fixed-top">
<div class="container NavBar__container">
<div class="NavBar__unauthenticated-actions">
<a class="NavBar__register-link" href="https://search.censys.io/register">Register</a>
<a class="NavBar__login-link" href="https://censys.io/login?came_from=https%3A%2F%2Fsearch.censys.io&from_censys_owned_external=True" onClick="window.location.href = 'https://censys.io/login?from_censys_owned_external=True&came_from=' + encodeURIComponent(window.location); return false;">Log In</a>
</div></div>
</nav>
<div id="content">
<div id="inner-content" class="container">
<div class="row">
<div class="col-md-12">
<a href="/">
<picture>
<img class="center-block landing-logo" alt="Censys Logo" src="https://search.censys.io/static/img/censys-2022.svg">
</picture>
</a>
<div class="NavBar__search-boxes-both">
<form id="search" class="NavBar__search-form" method="get" action="/search" spellcheck="false">
<div class="dropdown" id="index-picker">
<button id="NavBar__search-index-picker" class="NavBar__search-index-picker focus-outline" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="Resource Type Dropdown" type="button">
<span class="hide-on-mobile"><i class="fa fa-fw fa-search" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
<span id="resource-hosts" class="hide-on-mobile resource-button">Hosts</span>
<span class="hide-on-desktop"><i class="fa fa-fw fa-desktop" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
<span id="resource-certs" class="hide-on-mobile resource-button" hidden>Certificates</span>
<span class="hide-on-desktop" hidden><i class="fa fa-fw fa-certificate" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
<span class="hide-on-mobile"><i class="fa fa-fw fa-angle-down" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
</button>
<ul class="DropdownMenu dropdown-menu pull-left" aria-labelledby="NavBar__search-index-picker">
<li class="DropdownMenu__item DropdownMenu__item--no-link">
<div class="DropdownMenu__header">
Select Dataset
</div>
</li>
<li class="DropdownMenu__item">
<a id="dropdown-host" href="#">
<span class="DropdownMenu__item-icon"><i class="fa fa-fw fa-desktop" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
Hosts
</a>
</li>
<li class="DropdownMenu__item">
<a id="dropdown-certificates" href="#">
<span class="DropdownMenu__item-icon"><i class="fa fa-fw fa-certificate" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i></span>
Certificates
</a>
</li>
</ul>
</div>
<input name="resource" id="resource" aria-label="resource" value="hosts" hidden>
<div class="dropdown" id="search-settings">
<button id="search-settings-dropdown-menu" class="NavBar__button NavBar__button_border focus-outline" data-toggle="dropdown" aria-label="Search Settings" aria-haspopup="true" aria-expanded="false" type="button">
<i class="fa fa-fw fa-cog" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i>
</button>
<div>
<ul class="DropdownMenu dropdown-menu">
<li class="DropdownMenu__item DropdownMenu__item--no-link">
<div class="DropdownMenu__header">
Settings for Search Results
</div>
</li>
<li role="separator" class="DropdownMenu__divider"></li>
<li class="DropdownMenu__item DropdownMenu__item--no-link setting">
<div class="setting-label">Sort Order:</div>
<div class="btn-group btn-group-xs setting-values focus-outline">
<input type="radio" class="btn-check" name="sort" value="RELEVANCE" id="sort_order_rev" autocomplete="off" checked>
<label class="btn btn-white" for="sort_order_rev">Relevance</label>
<input tabindex="0" type="radio" class="btn-check" name="sort" value="ASCENDING" id="sort_order_asc" autocomplete="off">
<label class="btn btn-white" for="sort_order_asc">Ascending</label>
<input tabindex="0" type="radio" class="btn-check" name="sort" value="DESCENDING" id="sort_order_desc" autocomplete="off">
<label class="btn btn-white" for="sort_order_desc">Descending</label>
</div>
</li>
<li class="DropdownMenu__item DropdownMenu__item--no-link setting">
<div class="setting-label">Per Page:</div>
<div class="btn-group btn-group-xs setting-values focus-outline" role="group" aria-label="Results Per Page">
<input type="radio" class="btn-check" name="per_page" value="25" id="per_page_25" autocomplete="off" checked>
<label class="btn btn-white" for="per_page_25">25</label>
<input type="radio" class="btn-check" name="per_page" value="50" id="per_page_50" autocomplete="off">
<label class="btn btn-white" for="per_page_50">50</label>
<input type="radio" class="btn-check" name="per_page" value="100" id="per_page_100" autocomplete="off">
<label class="btn btn-white" for="per_page_100">100</label>
</div>
</li>
<li class="DropdownMenu__item DropdownMenu__item--no-link setting">
<div class="setting-label">Virtual Hosts:<a href="https://support.censys.io/hc/en-us/articles/4411773845524" target="_blank" rel="noopener"><i class="fa fa-fw fa-question-circle" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom" title="Identified by both a name and an IP address.<br><small><strong>Click to learn more.</strong></small>"></i></a></div>
<div class="btn-group btn-group-xs setting-values focus-outline" role="group" aria-label="Options for Virtual Hosts">
<input type="radio" class="btn-check" name="virtual_hosts" value="EXCLUDE" id="virtual_hosts_exclude" autocomplete="off" checked>
<label class="btn btn-white" for="virtual_hosts_exclude">Exclude</label>
<input type="radio" class="btn-check" name="virtual_hosts" value="INCLUDE" id="virtual_hosts_include" autocomplete="off">
<label class="btn btn-white" for="virtual_hosts_include">Include</label>
<input type="radio" class="btn-check" name="virtual_hosts" value="ONLY" id="virtual_hosts_only" autocomplete="off">
<label class="btn btn-white" for="virtual_hosts_only">Only</label>
</div>
</li>
</ul>
</div>
</div>
<input class="NavBar__search-box" type="text" placeholder="Search an IP address, name, protocol or field: value" aria-label="Search" name="q" id="q" value autocomplete="off" onfocus="this.selectionStart = this.selectionEnd = this.value.length;">
<button class="NavBar__search-clear focus-outline" id="clear-query-button" type="button" aria-label="Clear Query">
<i class="fa fa-fw fa-close" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i>
</button>
<button class="NavBar__search-multiline-toggle focus-outline" id="multiline-toggle" type="button" aria-label="Expand">
<i class="fa fa-fw fa-expand" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom" id="expand-icon"></i>
</button>
<div class="dropdown" id="export-query">
<button id="export-query-dropdown-menu" class="NavBar__button NavBar__button_border focus-outline" data-toggle="dropdown" aria-label="Export Query" aria-haspopup="true" aria-expanded="false" type="button">
<i class="fa fa-fw fa-terminal" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i>
</button>
<div>
<ul class="DropdownMenu dropdown-menu dropdown-menu-right">
<li class="DropdownMenu__item DropdownMenu__item--no-link">
<div class="DropdownMenu__header">
Export Query as cURL
<button class="NavBar__search-copy focus-outline" id="copy-query-button" type="button" aria-label="Copy Query" onclick="copyToClipboard('copy-text')">
<i class="fa fa-fw fa-clipboard" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i>
</button>
</div>
</li>
<li role="separator" class="DropdownMenu__divider"></li>
<li class="DropdownMenu__item DropdownMenu__item--no-link">
<div class="DropdownMenu__header">
</div>
<div class="DropdownMenu__inner-text-box">
<div class="copy-text">
<pre id="copy-text"> </pre>
</div>
</div>
<div class="DropdownMenu__link">
<a href="/account/api"> Get API Credentials </a>
</div>
</li>
</ul>
</div>
<script>
function copyToClipboard(containerid) {
var textToCopy = document.getElementById(containerid).innerText;
navigator.clipboard.writeText(textToCopy);
}
</script>
<script>
/* converts to api */
var params = new URLSearchParams(window.location.search);
function htmlEncode(s) {
return s.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/'/g, '"')
.replace(/"/g, '"');
}
function getV2ApiCurlString(apiResource) {
var apiParams = new URLSearchParams();
if (params.get("per_page") !== null) {
apiParams.set("per_page", params.get("per_page"));
}
if (params.get("virtual_hosts") !== null) {
apiParams.set("virtual_hosts", params.get("virtual_hosts"));
}
if (params.get("cursor") !== null) {
apiParams.set("cursor", params.get("cursor"));
}
apiParams.set("q", params.get("q", ""));
exportString = "curl -g -X 'GET' \\<br>";
exportString += "'https://search.censys.io/api/v2/" + apiResource + "/search?";
exportString += apiParams.toString() + "' \\<br>";
exportString += "-H 'Accept: application/json' \\<br>";
exportString += "--user \"$CENSYS_API_ID:$CENSYS_API_SECRET\"";
return exportString
}
if (params.get("resource") === "hosts") {
document.getElementById('copy-text').innerHTML = getV2ApiCurlString("hosts");
}
else if (params.get("resource") === "certificates") {
document.getElementById('copy-text').innerHTML = getV2ApiCurlString("certificates");
}
</script>
<script type="text/javascript">
/* hides button if no query */
var url = window.location.href;
var msg = document.getElementById('export-query-dropdown-menu');
/* update to check for resource=hosts and certs instead of length */
if( url.search("resource=hosts") != -1 ||
url.search("resource=certificates") != -1 ) {
msg.style.display = "block";
}
else {
msg.style.display = "none";
}
</script>
</div>
<input class="NavBar__search-submit focus-outline" id="submit-button" type="submit" value="Search">
</form>
<div class="hide-on-mobile hide-on-desktop" id="msf">
<textarea rows="1" class="NavBar__search-box-multi" placeholder="Press enter for more lines; Shift+Enter executes the search from this box." aria-label="Search" name="qm" id="qm" autocomplete="off" onfocus="this.selectionStart = this.selectionEnd = this.value.length;">
</textarea>
</div>
</div>
<p class="details">
<span><i class="fa fa-fw fa-gears" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i><strong>Services:</strong> 3.4B</span>
<span><i class="fa fa-fw fa-desktop" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i><strong>IPv4 Hosts:</strong> 250.4M</span>
<span><i class="fa fa-fw fa-desktop" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i><strong>IPv6 Hosts:</strong> 175.1M</span>
<span><i class="fa fa-fw fa-id-card-o" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i><strong>Virtual Hosts:</strong> 1.2B</span>
</p>
<div class="landing-buttons">
<a id="documentation-link" class="btn btn-info focus-outline" href="https://search.censys.io/search/getting-started">
<i class="fa fa-fw fa-book" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i> Getting Started
</a>
<a class="btn btn-info focus-outline" href="https://search.censys.io/subscriptions">
<i class="fa fa-fw fa-unlock" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i> Upgrade Account
</a>
<a class="btn btn-info focus-outline" href="https://workshop.censys.io/">
<i class="fa fa-fw fa-flask" aria-hidden="true" data-html="true" data-toggle="tooltip" data-placement="bottom"></i> Try Beta Features
</a>
</div>
</div>
</div>
</div>
<div id="changelog-preview">
<div class="container">
<div class="row">
<div class="col-xs-12">
<b>Latest Update</b> (5 days ago)
<div> Started scanning Checkpoint Topology </div>
<a href="/search/changelog?resources=hosts">See All Changes</a>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="footer__container container">
<div class="row">
<div class="col-md-6 left">
<span class="part">
<a href="https://censys.com/resources/" target="_blank" rel="noopener">Resource Hub</a>
</span>
•
<span class="part">
<a href="https://censys.com/exposure-management/" target="_blank" rel="noopener">Exposure Management</a>
</span>
•
<span class="part">
<a href="https://censys.com/federal/" target="_blank" rel="noopener">Federal</a>
</span>
•
<span class="part">
<a href="https://support.censys.io/hc/en-us/articles/360038761891-Research-Access-to-Censys-Data" target="_blank" rel="noopener">Research Access</a>
</span>
</div>
<div class="col-md-6 right">
<span class="part">
Need Help?
<a href="https://support.censys.io/" target="_blank" rel="noopener">Help Center</a>
or
<a href="/cdn-cgi/l/email-protection#b2c1c7c2c2ddc0c6f2d1d7dcc1cbc19cdbdd"><span class="__cf_email__" data-cfemail="9ae9efeaeaf5e8eedaf9fff4e9e3e9b4f3f5">[email protected]</span></a>
</span>
|
<span class="part">
© 2023 Censys
</span>
</div>
</div>
</div>
</footer>
<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script charset="utf-8" src="https://search.censys.io/static/js/bootstrap.min.js"></script>
<script src="https://search.censys.io/static/js/material.min.js"></script>
<script src="https://search.censys.io/static/js/material-kit.min.js" type="text/javascript"></script>
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.4.0/highlight.min.js"></script>
<script>
// If hljs is defined
if (typeof hljs !== 'undefined') {
// Highlight all code blocks
hljs.highlightAll();
}
</script>
<script>
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip();
$('#quota-alert').on('closed.bs.alert', function () {
$.post("https://search.censys.io/account/_dismiss_quota_alert",
{"csrf_token": "2ea994859c5adc3a289320806db96809b63e8674"},
function (result) { }
);
});
});
</script>
<script>
// Fixes Settings modal so that clicking options doesn't automatically close it.
$(document).on('click', '#search-settings .dropdown-menu', function (e) {
e.stopPropagation();
});
$(document).on('click', '#export-query .dropdown-menu-right', function (e) {
e.stopPropagation();
});
// Event handler for closing the index picker dropdown when tab
// focus moves away from the dropdown or the dropdown button
$(document).on('blur', '#index-picker', function (e) {
var currentFocus = e.relatedTarget;
var newFocusContained = $.contains(document.getElementById('index-picker'), currentFocus)
var indexPickerOpen = $("#index-picker").hasClass('open')
// Focus will be null if the menu is being navigated by mouse cursor.
// We don't want to automatically close the menu in such case
if (currentFocus !== null && !newFocusContained && indexPickerOpen) {
// If we're focusing away from the dropdown and the dropdown is
// opened, then close the dropdown by toggling the state
$("#NavBar__search-index-picker").dropdown('toggle');
}
});
// Event handler for closing the search settings dropdown when tab
// focus moves away from the dropdown or the dropdown button
$(document).on('blur', '#search-settings', function (e) {
var currentFocus = e.relatedTarget;
var newFocusContained = $.contains(document.getElementById('search-settings'), currentFocus)
var searchSettingsOpen = $("#search-settings").hasClass('open')
// Focus will be null if the menu is being navigated by mouse cursor.
// We don't want to automatically close the menu in such case
if (currentFocus !== null && !newFocusContained && searchSettingsOpen) {
// If we're focusing away from the dropdown and the dropdown is
// opened, then close the dropdown by toggling the state
$("#search-settings-dropdown-menu").dropdown('toggle');
}
});
// Event handler for closing the query export dropdown when tab
// focus moves away from the dropdown or the dropdown button
$(document).on('blur', '#export-query', function (e) {
var currentFocus = e.relatedTarget;
var newFocusContained = $.contains(document.getElementById('export-query'), currentFocus)
var exportQueryOpen = $("#export-query").hasClass('open')
// Focus will be null if the menu is being navigated by mouse cursor.
// We don't want to automatically close the menu in such case
if (currentFocus !== null && !newFocusContained && exportQueryOpen) {
// If we're focusing away from the dropdown and the dropdown is
// opened, then close the dropdown by toggling the state
$("#export-query-dropdown-menu").dropdown('toggle');
}
});
$("#search").submit(function(e) {
let cacheOff = $("#bypass_cache_off");
if (cacheOff.length > 0 && cacheOff.is(":checked")) {
cacheOff.attr("disabled", true);
}
});
function updateMainFromMulti() {
// View other icons: https://stackoverflow.com/a/18931703/6909734
$("#q").val($("#qm").val().replace(/\n/g, " \u21A9 "));
}
$("#qm").keydown(function(event) {
if (event.keyCode == 13 && event.shiftKey) {
event.preventDefault();
$("#search").submit();
}
});
$("#qm").keyup(function() {
updateMainFromMulti();
});
$("#q").focus(function(e) {
// Hide expanded form when search bar is clicked
var multiSearchForm = $("#msf");
if (!multiSearchForm.hasClass("hide-on-mobile hide-on-desktop")) {
$("#multiline-toggle").click()
}
});
$("#clear-query-button").click(function(e) {
e.preventDefault();
$("#q").val("");
$("#qm").val("");
$("#q").focus();
});
$("#multiline-toggle").click(function(e) {
e.preventDefault();
var multiSearchForm = $("#msf");
var multiToggleButton = $("#multiline-toggle");
var mainSearchBar = $("#q");
var multiSearchBar = $("#qm");
var expandIcon = $("#expand-icon");
if (multiSearchForm.hasClass("hide-on-mobile hide-on-desktop")) {
// do expand
expandIcon.attr("class", "fa fa-compress");
multiSearchForm.attr("class", "NavBar__multi-search-form");
multiToggleButton.attr("class", "NavBar__search-multiline-toggle-enabled focus-outline");
mainSearchBar.attr("readonly", true);
mainSearchBar.css("color", "#cbcbcb");
var mainQuery = mainSearchBar.val();
if (multiSearchBar.val() !== mainQuery || mainQuery.includes(" \u21A9 ")) {
multiSearchBar.val(mainQuery.replaceAll(" \u21A9 ", "\r\n"));
}
multiSearchBar.focus();
// If there aren't autocomplete suggestions,
// the textarea won't expand right away without this !
multiSearchBar.css("height", "50px");
} else {
// do shrink
expandIcon.attr("class", "fa fa-expand");
multiSearchForm.attr("class", "hide-on-mobile hide-on-desktop");
multiToggleButton.attr("class", "NavBar__search-multiline-toggle focus-outline");
mainSearchBar.attr("readonly", false);
mainSearchBar.css("color", "black");
mainSearchBar.focus();
}
});
// Grow size of multiline box dynamically
function textAreaAdjust(element){
// This redundant assignment is necessary
// or the input won't shrink when removing lines of text.
// -- minimum size of 50 to make it clear the box can expand.
element.style.height = "50px";
element.style.height = Math.min(200, element.scrollHeight)+"px";
}
function createRedirectURL() {
var url = new URL(window.location.href);
var params = new URLSearchParams(url.search);
var resource = $('#resource').val()
params.set("resource", resource);
params.delete("cursor");
// Handle redirects AWAY from legacy certs pages
if (url.pathname.includes('/certificates-legacy')) {
if (url.pathname.includes('definitions')) {
url.pathname = '/search/definitions'
} else if (url.pathname.includes('examples')) {
url.pathname = '/search/examples'
} else if (url.pathname.includes('help')) {
url.pathname = '/search/language'
} else if (url.pathname.includes('report')) {
url.pathname = 'search/report'
} else {
url.pathname = '/search'
if (!params.has("q")) {
params.set("q", $('#q').val())
}
}
// Handle redirect TO legacy certificates pages
} else if (resource === 'certificates-legacy') {
if (url.pathname.includes('definitions')) {
url.pathname = '/certificates-legacy/help/definitions'
} else if (url.pathname.includes('examples')) {
url.pathname = '/certificates-legacy/help/examples'
} else if (url.pathname.includes('language')) {
url.pathname = '/certificates-legacy/help'
} else if (url.pathname.includes('report')) {
url.pathname = '/certificates-legacy/report'
} else {
url.pathname = '/certificates-legacy' // results
if (!params.has("q")) {
params.set("q", $('#q').val())
}
}
}
if (url.pathname.includes('/certificates/') || url.pathname.includes('/hosts/')) {
url.pathname = '/search'
if (!params.has("q")) {
params.set("q", $('#q').val())
}
}
url.search = params.toString();
return url;
}
$('#dropdown-host').click(function(e) {
$('#resource').attr('value', 'hosts');
$('#search-settings').show();
$('#resource-hosts').show();
$('#resource-certs').hide();
$('#resource-certs-legacy').hide();
$('input.NavBar__search-box').attr('placeholder', 'Search an IP address, name, protocol or field: value')
var docLink = $('#documentation-link').attr("href");
var link = new URL(docLink);
var linkParams = new URLSearchParams(link.search);
linkParams.set("resource", $('#resource').val());
linkParams.delete("cursor");
link.search = linkParams.toString();
link.pathname = '/search/definitions'
$('#documentation-link').attr('href', link.toString())
})
$('#dropdown-certificates-legacy').click(function(e) {
$('#resource').attr('value', 'certificates-legacy');
$('#search-settings').hide();
$('#resource-certs-legacy').show();
$('#resource-certs').hide();
$('#resource-hosts').hide();
$('input.NavBar__search-box').attr('placeholder', 'Search a name on a certificate or other attribute')
var docLink = $('#documentation-link').attr("href");
var link = new URL(docLink);
var linkParams = new URLSearchParams(link.search);
linkParams.set("resource", $('#resource').val());
linkParams.delete("cursor");
link.search = linkParams.toString();
link.pathname = '/certificates-legacy/help/definitions'
$('#documentation-link').attr('href', link.toString())
})
$('#dropdown-certificates').click(function(e) {
$('#resource').attr('value', 'certificates');
$('#search-settings').hide();
$('#resource-certs').show();
$('#resource-hosts').hide();
$('#resource-certs-legacy').hide();
$('input.NavBar__search-box').attr('placeholder', 'Search a name on a certificate or other attribute')
var docLink = $('#documentation-link').attr("href");
var link = new URL(docLink);
var linkParams = new URLSearchParams(link.search);
linkParams.set("resource", $('#resource').val());
linkParams.delete("cursor");
link.search = linkParams.toString();
link.pathname = '/search/definitions'
$('#documentation-link').attr('href', link.toString())
})
</script>
<script charset="utf-8" src="https://search.censys.io/static/js/jquery.autocomplete.min.js"></script>
<script>
function logicSuggestion(statement) {
return {
data: {
category: "<i class=\"fa fa-fw fa-toggle-on\" aria-hidden=\"true\"></i> Boolean Logic",
},
value: statement,
};
}
function serviceNameSuggestion(serviceName) {
return {
data: {
category: "<i class=\"fa fa-fw fa-server\" aria-hidden=\"true\"></i> Service Name",
},
value: serviceName,
};
}
function _lookupFilter(suggestion, originalQuery, queryLowerCase) {
return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1;
};
var serviceNameSuggestions = $.map(["HTTP", "SSH", "SMTP", "FTP", "DNS"], serviceNameSuggestion);
var logicSuggestions = $.map(["and", "or"], logicSuggestion);
var urls = {
"hosts": "https://search.censys.io/static/data/autocomplete-hosts.json?version=daf8856f5991b6884e887c9ff3f1983e",
"certificates-legacy": "https://search.censys.io/static/data/autocomplete-certificates.json?version=e7defab6f2a77da0b9230d823fb97ae7",
};
var fieldSuggestions = {};
var resource = $('#resource').val()
var resources = [
'certificates-legacy',
'hosts',
]
resources.forEach(function(val, index) {
$.ajax({
url: urls[val],
success: function (data) {
if (data === undefined) {
return;
}
fieldSuggestions[val] = data.data;
}
});
})
function beforeRenderCallback(elemId, isMultiline) {
return function (_, suggestions) {
if (isMultiline) {
// Adjust size before displaying autcomplete, or
// Suggestions will sometimes be offset
textAreaAdjust(this);
}
if (suggestions) {
$(elemId).css("border-bottom-left-radius", "0pt");
}
}
}
function onHideCallback(elemId) {
return function (_) {
$(elemId).css("border-bottom-left-radius", "4pt");
}
}
function onSelectCallback(isMultiline) {
return function (_) {
this.focus();
this.value = this.value;
if (isMultiline) {
updateMainFromMulti();
}
}
}
function BindAutocomplete() {
var resource = $('#resource').val()
var opts = {
serviceUrl: "/api/ui/suggestions",
params: {resource: resource},
deferRequestBy: 80,
};
$("#q").focus();
$("#q").autocomplete({
...opts,
maxHeight: 600,
tabDisabled: true,
delimiter: /:|\s/gmi,
beforeRender: beforeRenderCallback("#q", false),
onHide: onHideCallback("#q"),
onSelect: onSelectCallback(false),
});
$("#qm").autocomplete({
...opts,
maxHeight: 600,
tabDisabled: true,
delimiter: /:|\s/gmi,
beforeRender: beforeRenderCallback("#qm", true),
onHide: onHideCallback("#qm"),
onSelect: onSelectCallback(true),
});
}
// Create click handlers to re-bind the autocompelete options
// When a new resource type is selected
$('#dropdown-host').click(function(e) {
BindAutocomplete();
});
$('#dropdown-certificates').click(function(e) {
BindAutocomplete();
});
// Bind the autocomplete to the initial page state
BindAutocomplete();
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NVFXGE3YHC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-NVFXGE3YHC')
</script>
</body>
</html>
Last updated