blob: 08387cb9976752e5a40a1f46c54038e42a58007b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<html>
<head>
<title>Search</title>
<style>
body {
background: #f0f0f0
}
input#what {
width: 80%
}
span.srch_sect {
color: #2f4f4f
}
a.srch_link {
color: #4b0082
}
span.srch_url {
color: #20b2aa
}
a[onclick] {
cursor: pointer
}
</style>
<script>
// read API document
let apiurl = 'https://(API)/_/ansero.php';
let favurl = 'https://(API)/_/favicon.php?f=';
let mylang = 'en-US'; // e.g. 'fr'
let hide_domain = []; // e.g. ['google.com', 'google.fr']
let hide_fqdn = []; // e.g. ['en.wikipedia.org']
let removeMITMsites = false;
function searchFor(key) {
document.getElementById('what').value = key;
search();
}
function search() {
let answer = '',
keyword = document.getElementById('what').value;
if (keyword.length < 2) {
return false;
}
fetch(apiurl, {
method: 'POST',
mode: 'cors',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 't=json' + (removeMITMsites ? '&m' : '') + '&l=' + mylang + '&q=' + encodeURI(keyword)
}).then(r => r.json()).then(r => {
if (r.info.desc != undefined) {
answer += '<span class="srch_sect">';
answer += '' + r.info.desc + '<br>';
answer += '<a href="' + r.info.url + '" class="srch_link">' + r.info.title + '</a>';
answer += '</span><br><br>';
}
if (r.sgst.length > 0) {
answer += '<span class="srch_sect">Search other: <br>';
r.sgst.forEach(x => {
answer += '[<a class="srch_link" onclick="searchFor(\'' + x + '\');return false;">' + x + '</a>]<br>';
});
answer += '</span><br><br>';
}
if (r.crct.length > 0) {
answer += '<span class="srch_sect">Maybe: ';
answer += '[<a class="srch_link" onclick="searchFor(\'' + r.crct[0] + '\');return false;">' + r.crct[0] + '</a>]<br>';
answer += '</span><br><br>';
}
r.res.forEach(x => {
if (!hide_fqdn.includes(x.fqdn) && !hide_domain.includes(x.dom)) {
answer += '<span class="srch_sect">';
answer += '<img src="' + favurl + (x.url.startsWith('https:') ? '1-' : '0-') + x.fqdn + '"> ';
answer += '<a href="' + x.url + '" class="srch_link">' + (x.mitm == 1 ? '[MITM!!] ' : '') + x.title + '</a><br>';
answer += '' + x.desc + '<br>';
answer += '<span class="srch_url">' + x.url + '</span></span>';
answer += '<br><br>';
}
});
document.getElementById('resultarea').innerHTML = answer;
}).catch(e => console.log(e));
return false;
}
</script>
</head>
<body>
<form action="#" onsubmit="return search()">
<input type="text" id="what" placeholder="Search for..." minlength="2" required>
<input type="submit" value="Search">
</form>
<br>
<br>
<span id="resultarea"></span>
</body>
</html>
|