Spaces:
Running
Running
Update index.html
Browse files- index.html +38 -18
index.html
CHANGED
@@ -132,6 +132,12 @@
|
|
132 |
text-align: center;
|
133 |
margin-top: 10px;
|
134 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
</style>
|
136 |
</head>
|
137 |
<body>
|
@@ -145,7 +151,6 @@
|
|
145 |
<button onclick="executeSearch()">INITIATE</button>
|
146 |
</div>
|
147 |
|
148 |
-
<!-- Переключатель количества открываемых страниц -->
|
149 |
<div class="controls">
|
150 |
<label for="pagesSelect">Количество открываемых страниц:</label>
|
151 |
<select id="pagesSelect">
|
@@ -162,7 +167,10 @@
|
|
162 |
</select>
|
163 |
</div>
|
164 |
|
165 |
-
|
|
|
|
|
|
|
166 |
<div class="examples">
|
167 |
<strong>Примеры запросов:</strong><br />
|
168 |
<span class="example" onclick="fillSearch('intitle:index.of /config')">intitle:index.of /config</span>
|
@@ -193,17 +201,20 @@
|
|
193 |
</div>
|
194 |
|
195 |
<script>
|
196 |
-
// Функция для автозаполнения поля поиска из кликабельных примеров
|
197 |
function fillSearch(query) {
|
198 |
document.getElementById('searchInput').value = query;
|
199 |
}
|
200 |
|
201 |
function executeSearch() {
|
202 |
-
const searchTerm = document.getElementById('searchInput').value;
|
203 |
if (!searchTerm) {
|
204 |
alert('SEARCH TERM REQUIRED!');
|
205 |
return;
|
206 |
}
|
|
|
|
|
|
|
|
|
207 |
|
208 |
const output = document.getElementById('output');
|
209 |
output.innerHTML += '> INITIALIZING SEARCH: ' + searchTerm + '\n';
|
@@ -211,20 +222,22 @@
|
|
211 |
}
|
212 |
|
213 |
function searchGoogle(search) {
|
214 |
-
|
215 |
-
let
|
|
|
|
|
216 |
let query = "";
|
217 |
-
|
218 |
const output = document.getElementById('output');
|
219 |
|
220 |
-
|
221 |
-
for (let i = 0; i <
|
222 |
for (let ii = 0; ii < (257 - (i * o)); ii++) {
|
223 |
-
query
|
224 |
}
|
225 |
query = query.slice(0, -1);
|
226 |
-
query =
|
227 |
-
|
228 |
urls.push(url);
|
229 |
query = "";
|
230 |
}
|
@@ -232,12 +245,19 @@
|
|
232 |
output.innerHTML += '> GENERATED ' + urls.length + ' SEARCH PATTERNS\n';
|
233 |
output.innerHTML += '> INITIATING SEARCH EXECUTION...\n';
|
234 |
|
235 |
-
|
236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
let delay = 0;
|
238 |
-
|
239 |
-
// Открываем только выбранное количество порталов
|
240 |
-
for (let index = 0; index < Math.min(pagesToOpen, urls.length); index++) {
|
241 |
setTimeout(() => {
|
242 |
output.innerHTML += '> [PORTAL ' + (index + 1) + '] LAUNCHED\n';
|
243 |
output.scrollTop = output.scrollHeight;
|
@@ -248,4 +268,4 @@
|
|
248 |
}
|
249 |
</script>
|
250 |
</body>
|
251 |
-
</html>
|
|
|
132 |
text-align: center;
|
133 |
margin-top: 10px;
|
134 |
}
|
135 |
+
.legal-warning {
|
136 |
+
color: #ff0000;
|
137 |
+
font-style: italic;
|
138 |
+
margin: 15px 0;
|
139 |
+
text-align: center;
|
140 |
+
}
|
141 |
</style>
|
142 |
</head>
|
143 |
<body>
|
|
|
151 |
<button onclick="executeSearch()">INITIATE</button>
|
152 |
</div>
|
153 |
|
|
|
154 |
<div class="controls">
|
155 |
<label for="pagesSelect">Количество открываемых страниц:</label>
|
156 |
<select id="pagesSelect">
|
|
|
167 |
</select>
|
168 |
</div>
|
169 |
|
170 |
+
<div class="legal-warning">
|
171 |
+
*Внимание: Используйте только для HE законных целей. Нарушение политик поисковых систем НЕ запрещено.
|
172 |
+
</div>
|
173 |
+
|
174 |
<div class="examples">
|
175 |
<strong>Примеры запросов:</strong><br />
|
176 |
<span class="example" onclick="fillSearch('intitle:index.of /config')">intitle:index.of /config</span>
|
|
|
201 |
</div>
|
202 |
|
203 |
<script>
|
|
|
204 |
function fillSearch(query) {
|
205 |
document.getElementById('searchInput').value = query;
|
206 |
}
|
207 |
|
208 |
function executeSearch() {
|
209 |
+
const searchTerm = document.getElementById('searchInput').value.trim();
|
210 |
if (!searchTerm) {
|
211 |
alert('SEARCH TERM REQUIRED!');
|
212 |
return;
|
213 |
}
|
214 |
+
if (searchTerm.length > 1024) {
|
215 |
+
alert('SEARCH TERM TOO LONG! (Max length: 1024 characters)');
|
216 |
+
return;
|
217 |
+
}
|
218 |
|
219 |
const output = document.getElementById('output');
|
220 |
output.innerHTML += '> INITIALIZING SEARCH: ' + searchTerm + '\n';
|
|
|
222 |
}
|
223 |
|
224 |
function searchGoogle(search) {
|
225 |
+
const wordCount = search.split(" ").length;
|
226 |
+
let o = Math.max(32 - wordCount, 1); // Prevent o from being <=0
|
227 |
+
|
228 |
+
const template = "site:*.*.%NUM%.* |";
|
229 |
let query = "";
|
230 |
+
const urls = [];
|
231 |
const output = document.getElementById('output');
|
232 |
|
233 |
+
const maxIterations = Math.floor(256 / o);
|
234 |
+
for (let i = 0; i < maxIterations; i++) {
|
235 |
for (let ii = 0; ii < (257 - (i * o)); ii++) {
|
236 |
+
query += template.replace("%NUM%", ii);
|
237 |
}
|
238 |
query = query.slice(0, -1);
|
239 |
+
query = `(${search}) (${query})`;
|
240 |
+
const url = "https://www.google.com/search?q=" + encodeURIComponent(query);
|
241 |
urls.push(url);
|
242 |
query = "";
|
243 |
}
|
|
|
245 |
output.innerHTML += '> GENERATED ' + urls.length + ' SEARCH PATTERNS\n';
|
246 |
output.innerHTML += '> INITIATING SEARCH EXECUTION...\n';
|
247 |
|
248 |
+
const pagesToOpen = Math.min(
|
249 |
+
parseInt(document.getElementById('pagesSelect').value, 10),
|
250 |
+
urls.length
|
251 |
+
);
|
252 |
+
|
253 |
+
if (pagesToOpen > 5) {
|
254 |
+
if (!confirm(`Opening ${pagesToOpen} portals. Continue?`)) {
|
255 |
+
return;
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
let delay = 0;
|
260 |
+
for (let index = 0; index < pagesToOpen; index++) {
|
|
|
|
|
261 |
setTimeout(() => {
|
262 |
output.innerHTML += '> [PORTAL ' + (index + 1) + '] LAUNCHED\n';
|
263 |
output.scrollTop = output.scrollHeight;
|
|
|
268 |
}
|
269 |
</script>
|
270 |
</body>
|
271 |
+
</html>
|