mirror of
https://github.com/soxoj/maigret.git
synced 2026-05-13 18:05:39 +00:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b345512489 | |||
| 786cb59145 | |||
| 481baddec6 | |||
| ecb3d76581 | |||
| 8a8fab5bed | |||
| 2fee65fe4e | |||
| dabba859f3 | |||
| 74d4d40abd | |||
| d6f6d78d3f | |||
| 1b61c5085e | |||
| 01e20518c1 | |||
| 8477385289 | |||
| 491dd8f166 | |||
| c64b7a1c85 | |||
| 03511a7a8f | |||
| 7f1a0fae03 | |||
| b0de174df2 | |||
| b5db3f0035 | |||
| 53d698bb7b | |||
| 23fff42ca7 | |||
| 51d9e6f5f6 | |||
| 640c04f20b | |||
| 69f78e331b | |||
| 69c315b00e | |||
| b755628a1d | |||
| 7490a412db | |||
| 2741680d4a | |||
| e5fc221ce2 | |||
| a044e3dd79 |
@@ -15,7 +15,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: [3.6, 3.7, 3.8, 3.9]
|
python-version: [3.6.9, 3.7, 3.8, 3.9]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|||||||
@@ -2,6 +2,20 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.1.19] - 2021-04-14
|
||||||
|
* added `--no-progressbar` option
|
||||||
|
* fixed ascii tree bug
|
||||||
|
* fixed `python -m maigret` run
|
||||||
|
* fixed requests freeze with timeout async tasks
|
||||||
|
|
||||||
|
## [0.1.18] - 2021-03-30
|
||||||
|
* some API improvements
|
||||||
|
|
||||||
|
## [0.1.17] - 2021-03-30
|
||||||
|
* simplified maigret search API
|
||||||
|
* improved documentation
|
||||||
|
* fixed 403 response code ignoring bug
|
||||||
|
|
||||||
## [0.1.16] - 2021-03-21
|
## [0.1.16] - 2021-03-21
|
||||||
* improved URL parsing mode
|
* improved URL parsing mode
|
||||||
* improved sites submit mode
|
* improved sites submit mode
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#! /usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import asyncio
|
import asyncio
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,5 @@
|
|||||||
"""Maigret"""
|
"""Maigret"""
|
||||||
|
|
||||||
|
from .checking import maigret as search
|
||||||
|
from .sites import MaigretEngine, MaigretSite, MaigretDatabase
|
||||||
|
from .notify import QueryNotifyPrint as Notifier
|
||||||
+2
-2
@@ -6,7 +6,7 @@ Maigret entrypoint
|
|||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
|
||||||
import maigret
|
from .maigret import main
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
asyncio.run(maigret.main())
|
asyncio.run(main())
|
||||||
|
|||||||
+53
-21
@@ -1,5 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
|
from mock import Mock
|
||||||
import re
|
import re
|
||||||
import ssl
|
import ssl
|
||||||
import sys
|
import sys
|
||||||
@@ -45,6 +46,14 @@ QueryDraft = Tuple[Callable, Any, Any]
|
|||||||
QueriesDraft = Iterable[QueryDraft]
|
QueriesDraft = Iterable[QueryDraft]
|
||||||
|
|
||||||
|
|
||||||
|
def create_task_func():
|
||||||
|
if sys.version_info.minor > 6:
|
||||||
|
create_asyncio_task = asyncio.create_task
|
||||||
|
else:
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
create_asyncio_task = loop.create_task
|
||||||
|
return create_asyncio_task
|
||||||
|
|
||||||
class AsyncExecutor:
|
class AsyncExecutor:
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.logger = kwargs['logger']
|
self.logger = kwargs['logger']
|
||||||
@@ -108,22 +117,38 @@ class AsyncioProgressbarQueueExecutor(AsyncExecutor):
|
|||||||
self.workers_count = kwargs.get('in_parallel', 10)
|
self.workers_count = kwargs.get('in_parallel', 10)
|
||||||
self.progress_func = kwargs.get('progress_func', tqdm.tqdm)
|
self.progress_func = kwargs.get('progress_func', tqdm.tqdm)
|
||||||
self.queue = asyncio.Queue(self.workers_count)
|
self.queue = asyncio.Queue(self.workers_count)
|
||||||
|
self.timeout = kwargs.get('timeout')
|
||||||
|
|
||||||
async def worker(self):
|
async def worker(self):
|
||||||
while True:
|
while True:
|
||||||
f, args, kwargs = await self.queue.get()
|
try:
|
||||||
result = await f(*args, **kwargs)
|
f, args, kwargs = self.queue.get_nowait()
|
||||||
|
except asyncio.QueueEmpty:
|
||||||
|
return
|
||||||
|
|
||||||
|
query_future = f(*args, **kwargs)
|
||||||
|
query_task = create_task_func()(query_future)
|
||||||
|
try:
|
||||||
|
result = await asyncio.wait_for(query_task, timeout=self.timeout)
|
||||||
|
except asyncio.TimeoutError:
|
||||||
|
result = None
|
||||||
|
|
||||||
self.results.append(result)
|
self.results.append(result)
|
||||||
self.progress.update(1)
|
self.progress.update(1)
|
||||||
self.queue.task_done()
|
self.queue.task_done()
|
||||||
|
|
||||||
async def _run(self, tasks: QueriesDraft):
|
async def _run(self, queries: QueriesDraft):
|
||||||
self.results = []
|
self.results = []
|
||||||
workers = [asyncio.create_task(self.worker())
|
|
||||||
for _ in range(self.workers_count)]
|
queries_list = list(queries)
|
||||||
task_list = list(tasks)
|
|
||||||
self.progress = self.progress_func(total=len(task_list))
|
min_workers = min(len(queries_list), self.workers_count)
|
||||||
for t in task_list:
|
|
||||||
|
workers = [create_task_func()(self.worker())
|
||||||
|
for _ in range(min_workers)]
|
||||||
|
|
||||||
|
self.progress = self.progress_func(total=len(queries_list))
|
||||||
|
for t in queries_list:
|
||||||
await self.queue.put(t)
|
await self.queue.put(t)
|
||||||
await self.queue.join()
|
await self.queue.join()
|
||||||
for w in workers:
|
for w in workers:
|
||||||
@@ -259,7 +284,7 @@ def process_site_result(response, query_notify, logger, results_info, site: Maig
|
|||||||
|
|
||||||
if status_code and not error_text:
|
if status_code and not error_text:
|
||||||
error_text, site_error_text = detect_error_page(html_text, status_code, failure_errors,
|
error_text, site_error_text = detect_error_page(html_text, status_code, failure_errors,
|
||||||
site.ignore_403)
|
site.ignore403)
|
||||||
|
|
||||||
if site.activation and html_text:
|
if site.activation and html_text:
|
||||||
is_need_activation = any([s for s in site.activation['marks'] if s in html_text])
|
is_need_activation = any([s for s in site.activation['marks'] if s in html_text])
|
||||||
@@ -387,26 +412,32 @@ def process_site_result(response, query_notify, logger, results_info, site: Maig
|
|||||||
return results_info
|
return results_info
|
||||||
|
|
||||||
|
|
||||||
async def maigret(username, site_dict, query_notify, logger,
|
async def maigret(username, site_dict, logger, query_notify=None,
|
||||||
proxy=None, timeout=None, is_parsing_enabled=False,
|
proxy=None, timeout=None, is_parsing_enabled=False,
|
||||||
id_type='username', debug=False, forced=False,
|
id_type='username', debug=False, forced=False,
|
||||||
max_connections=100, no_progressbar=False,
|
max_connections=100, no_progressbar=False,
|
||||||
cookies=None):
|
cookies=None):
|
||||||
"""Main search func
|
"""Main search func
|
||||||
|
|
||||||
Checks for existence of username on various social media sites.
|
Checks for existence of username on certain sites.
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
username -- String indicating username that report
|
username -- Username string will be used for search.
|
||||||
should be created against.
|
site_dict -- Dictionary containing sites data.
|
||||||
site_dict -- Dictionary containing all of the site data.
|
|
||||||
query_notify -- Object with base type of QueryNotify().
|
query_notify -- Object with base type of QueryNotify().
|
||||||
This will be used to notify the caller about
|
This will be used to notify the caller about
|
||||||
query results.
|
query results.
|
||||||
proxy -- String indicating the proxy URL
|
logger -- Standard Python logger object.
|
||||||
timeout -- Time in seconds to wait before timing out request.
|
timeout -- Time in seconds to wait before timing out request.
|
||||||
Default is no timeout.
|
Default is no timeout.
|
||||||
is_parsing_enabled -- Search for other usernames in website pages.
|
is_parsing_enabled -- Extract additional info from account pages.
|
||||||
|
id_type -- Type of username to search.
|
||||||
|
Default is 'username', see all supported here:
|
||||||
|
https://github.com/soxoj/maigret/wiki/Supported-identifier-types
|
||||||
|
max_connections -- Maximum number of concurrent connections allowed.
|
||||||
|
Default is 100.
|
||||||
|
no_progressbar -- Displaying of ASCII progressbar during scanner.
|
||||||
|
cookies -- Filename of a cookie jar file to use for each request.
|
||||||
|
|
||||||
Return Value:
|
Return Value:
|
||||||
Dictionary containing results from report. Key of dictionary is the name
|
Dictionary containing results from report. Key of dictionary is the name
|
||||||
@@ -423,6 +454,9 @@ async def maigret(username, site_dict, query_notify, logger,
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# Notify caller that we are starting the query.
|
# Notify caller that we are starting the query.
|
||||||
|
if not query_notify:
|
||||||
|
query_notify = Mock()
|
||||||
|
|
||||||
query_notify.start(username, id_type)
|
query_notify.start(username, id_type)
|
||||||
|
|
||||||
# TODO: connector
|
# TODO: connector
|
||||||
@@ -602,7 +636,6 @@ def timeout_check(value):
|
|||||||
|
|
||||||
|
|
||||||
async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=False):
|
async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=False):
|
||||||
query_notify = Mock()
|
|
||||||
changes = {
|
changes = {
|
||||||
'disabled': False,
|
'disabled': False,
|
||||||
}
|
}
|
||||||
@@ -622,10 +655,9 @@ async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=F
|
|||||||
for username, status in check_data:
|
for username, status in check_data:
|
||||||
async with semaphore:
|
async with semaphore:
|
||||||
results_dict = await maigret(
|
results_dict = await maigret(
|
||||||
username,
|
username=username,
|
||||||
{site.name: site},
|
site_dict={site.name: site},
|
||||||
query_notify,
|
logger=logger,
|
||||||
logger,
|
|
||||||
timeout=30,
|
timeout=30,
|
||||||
id_type=site.type,
|
id_type=site.type,
|
||||||
forced=True,
|
forced=True,
|
||||||
|
|||||||
+9
-4
@@ -21,7 +21,7 @@ from .sites import MaigretDatabase
|
|||||||
from .submit import submit_dialog
|
from .submit import submit_dialog
|
||||||
from .utils import get_dict_ascii_tree
|
from .utils import get_dict_ascii_tree
|
||||||
|
|
||||||
__version__ = '0.1.16'
|
__version__ = '0.1.19'
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
@@ -104,6 +104,10 @@ async def main():
|
|||||||
action="store_true", dest="no_color", default=False,
|
action="store_true", dest="no_color", default=False,
|
||||||
help="Don't color terminal output"
|
help="Don't color terminal output"
|
||||||
)
|
)
|
||||||
|
parser.add_argument("--no-progressbar",
|
||||||
|
action="store_true", dest="no_progressbar", default=False,
|
||||||
|
help="Don't show progressbar."
|
||||||
|
)
|
||||||
parser.add_argument("--browse", "-b",
|
parser.add_argument("--browse", "-b",
|
||||||
action="store_true", dest="browse", default=False,
|
action="store_true", dest="browse", default=False,
|
||||||
help="Browse to all results on default bowser."
|
help="Browse to all results on default bowser."
|
||||||
@@ -341,9 +345,9 @@ async def main():
|
|||||||
|
|
||||||
sites_to_check = get_top_sites_for_id(id_type)
|
sites_to_check = get_top_sites_for_id(id_type)
|
||||||
|
|
||||||
results = await maigret(username,
|
results = await maigret(username=username,
|
||||||
dict(sites_to_check),
|
site_dict=dict(sites_to_check),
|
||||||
query_notify,
|
query_notify=query_notify,
|
||||||
proxy=args.proxy,
|
proxy=args.proxy,
|
||||||
timeout=args.timeout,
|
timeout=args.timeout,
|
||||||
is_parsing_enabled=parsing_enabled,
|
is_parsing_enabled=parsing_enabled,
|
||||||
@@ -353,6 +357,7 @@ async def main():
|
|||||||
cookies=args.cookie_file,
|
cookies=args.cookie_file,
|
||||||
forced=args.use_disabled_sites,
|
forced=args.use_disabled_sites,
|
||||||
max_connections=args.connections,
|
max_connections=args.connections,
|
||||||
|
no_progressbar=args.no_progressbar,
|
||||||
)
|
)
|
||||||
|
|
||||||
general_results.append((username, id_type, results))
|
general_results.append((username, id_type, results))
|
||||||
|
|||||||
+74
-54
@@ -94,20 +94,6 @@
|
|||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"1x": {
|
|
||||||
"tags": [
|
|
||||||
"ba",
|
|
||||||
"in",
|
|
||||||
"se"
|
|
||||||
],
|
|
||||||
"checkType": "message",
|
|
||||||
"absenceStrs": "This user does not exist or is not approved yet. Come back later.",
|
|
||||||
"alexaRank": 134199,
|
|
||||||
"url": "https://1x.com/member/{username}",
|
|
||||||
"urlMain": "https://1x.com",
|
|
||||||
"usernameClaimed": "blue",
|
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
|
||||||
},
|
|
||||||
"1xforum": {
|
"1xforum": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
@@ -1413,22 +1399,22 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis"
|
"usernameUnclaimed": "noonewouldeverusethis"
|
||||||
},
|
},
|
||||||
"Avto-forum.name": {
|
"Avto-forum.name": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 716960,
|
"alexaRank": 716960,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://avto-forum.name",
|
"urlMain": "https://avto-forum.name",
|
||||||
"usernameClaimed": "mariya",
|
"usernameClaimed": "mariya",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Avtoforum": {
|
"Avtoforum": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://avtoforum.org",
|
"urlMain": "https://avtoforum.org",
|
||||||
"usernameClaimed": "tim",
|
"usernameClaimed": "tim",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -1566,25 +1552,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"XSS.is": {
|
"XSS.is": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"in",
|
"hacking",
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"activation": {
|
"engine": "XenForo",
|
||||||
"method": "xssis",
|
|
||||||
"marks": [
|
|
||||||
"errorHtml"
|
|
||||||
],
|
|
||||||
"url": "https://xss.is/login/keep-alive",
|
|
||||||
"src": "csrf",
|
|
||||||
"dst": "x-guest-token"
|
|
||||||
},
|
|
||||||
"checkType": "status_code",
|
|
||||||
"getParams": {
|
|
||||||
"_xfToken": "1611179947,a2710362e45dad9aa1da381e21941a38"
|
|
||||||
},
|
|
||||||
"alexaRank": 165220,
|
"alexaRank": 165220,
|
||||||
"url": "https://xss.is/index.php?members/find&q={username}&_xfRequestUri=%2Fmembers%2F%3Fkey%3Dmost_messages&_xfWithData=1&_xfResponseType=json",
|
|
||||||
"urlMain": "https://xss.is",
|
"urlMain": "https://xss.is",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -1654,6 +1628,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"BeerMoneyForum": {
|
"BeerMoneyForum": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"jp",
|
"jp",
|
||||||
"ve"
|
"ve"
|
||||||
@@ -1661,7 +1636,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "The specified member cannot be found.",
|
"absenceStrs": "The specified member cannot be found.",
|
||||||
"alexaRank": 11581,
|
"alexaRank": 11581,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://www.beermoneyforum.com/members/?username={username}",
|
"url": "https://www.beermoneyforum.com/members/?username={username}",
|
||||||
"urlMain": "https://www.beermoneyforum.com",
|
"urlMain": "https://www.beermoneyforum.com",
|
||||||
"usernameClaimed": "Yugocean",
|
"usernameClaimed": "Yugocean",
|
||||||
@@ -2031,6 +2005,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"BoomInfo": {
|
"BoomInfo": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru",
|
"ru",
|
||||||
"ua"
|
"ua"
|
||||||
@@ -2038,7 +2013,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f.",
|
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u043c\u044f.",
|
||||||
"alexaRank": 1680672,
|
"alexaRank": 1680672,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://boominfo.ru/members/?username={username}",
|
"url": "https://boominfo.ru/members/?username={username}",
|
||||||
"urlMain": "https://boominfo.ru",
|
"urlMain": "https://boominfo.ru",
|
||||||
"usernameClaimed": "boominfo",
|
"usernameClaimed": "boominfo",
|
||||||
@@ -2090,6 +2064,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Brute": {
|
"Brute": {
|
||||||
|
"disabled": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
@@ -2687,7 +2662,12 @@
|
|||||||
"in"
|
"in"
|
||||||
],
|
],
|
||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "Adapted from",
|
"presenseStrs": [
|
||||||
|
"<div class=\"title\">"
|
||||||
|
],
|
||||||
|
"absenceStrs": [
|
||||||
|
"Adapted from"
|
||||||
|
],
|
||||||
"alexaRank": 7219,
|
"alexaRank": 7219,
|
||||||
"url": "https://www.codementor.io/{username}",
|
"url": "https://www.codementor.io/{username}",
|
||||||
"urlMain": "https://www.codementor.io/",
|
"urlMain": "https://www.codementor.io/",
|
||||||
@@ -3034,6 +3014,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Damochka": {
|
"Damochka": {
|
||||||
|
"disabled": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
@@ -3591,12 +3572,12 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis777"
|
"usernameUnclaimed": "noonewouldeverusethis777"
|
||||||
},
|
},
|
||||||
"Dumpz": {
|
"Dumpz": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 1291982,
|
"alexaRank": 1291982,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://dumpz.ws",
|
"urlMain": "https://dumpz.ws",
|
||||||
"usernameClaimed": "emailx45",
|
"usernameClaimed": "emailx45",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -3848,13 +3829,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Erogen.club": {
|
"Erogen.club": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru",
|
"ru",
|
||||||
"ua"
|
"ua"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 479929,
|
"alexaRank": 479929,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://erogen.club",
|
"urlMain": "https://erogen.club",
|
||||||
"usernameClaimed": "yanok",
|
"usernameClaimed": "yanok",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -5814,18 +5795,19 @@
|
|||||||
},
|
},
|
||||||
"Gunandgame": {
|
"Gunandgame": {
|
||||||
"disabled": true,
|
"disabled": true,
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"us"
|
"us"
|
||||||
],
|
],
|
||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "The specified member cannot be found. Please enter a member's entire name.",
|
"absenceStrs": "The specified member cannot be found. Please enter a member's entire name.",
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://www.gunandgame.com/members/?username={username}",
|
"url": "https://www.gunandgame.com/members/?username={username}",
|
||||||
"urlMain": "https://www.gunandgame.co",
|
"urlMain": "https://www.gunandgame.co",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Gunboards": {
|
"Gunboards": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"in",
|
"in",
|
||||||
"us"
|
"us"
|
||||||
@@ -5835,7 +5817,6 @@
|
|||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 464194,
|
"alexaRank": 464194,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://forums.gunboards.com",
|
"urlMain": "https://forums.gunboards.com",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -7323,6 +7304,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Lingvolive": {
|
"Lingvolive": {
|
||||||
|
"disabled": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"it",
|
"it",
|
||||||
"ru"
|
"ru"
|
||||||
@@ -8503,12 +8485,12 @@
|
|||||||
},
|
},
|
||||||
"Musiker-board": {
|
"Musiker-board": {
|
||||||
"disabled": true,
|
"disabled": true,
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"de"
|
"de"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 151707,
|
"alexaRank": 151707,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://www.musiker-board.de",
|
"urlMain": "https://www.musiker-board.de",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -9053,13 +9035,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Niketalk": {
|
"Niketalk": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"us"
|
"us"
|
||||||
],
|
],
|
||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "The specified member cannot be found",
|
"absenceStrs": "The specified member cannot be found",
|
||||||
"alexaRank": 165332,
|
"alexaRank": 165332,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://niketalk.com/members/?username={username}",
|
"url": "https://niketalk.com/members/?username={username}",
|
||||||
"urlMain": "https://niketalk.com",
|
"urlMain": "https://niketalk.com",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -9636,6 +9618,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Pbnation": {
|
"Pbnation": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ca",
|
"ca",
|
||||||
"us"
|
"us"
|
||||||
@@ -9643,7 +9626,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "This user has not registered",
|
"absenceStrs": "This user has not registered",
|
||||||
"alexaRank": 107502,
|
"alexaRank": 107502,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://www.pbnation.com/member.php?username={username}",
|
"url": "https://www.pbnation.com/member.php?username={username}",
|
||||||
"urlMain": "https://www.pbnation.com/",
|
"urlMain": "https://www.pbnation.com/",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -10314,6 +10296,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Prosvetlenie": {
|
"Prosvetlenie": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"kg",
|
"kg",
|
||||||
"ru"
|
"ru"
|
||||||
@@ -10321,7 +10304,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
||||||
"alexaRank": 2256482,
|
"alexaRank": 2256482,
|
||||||
"ignore403": true,
|
|
||||||
"url": "http://www.prosvetlenie.org/forum/members/?username={username}",
|
"url": "http://www.prosvetlenie.org/forum/members/?username={username}",
|
||||||
"urlMain": "http://www.prosvetlenie.org",
|
"urlMain": "http://www.prosvetlenie.org",
|
||||||
"usernameClaimed": "odin",
|
"usernameClaimed": "odin",
|
||||||
@@ -10533,6 +10515,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"RPGGeek": {
|
"RPGGeek": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"gaming",
|
"gaming",
|
||||||
"us"
|
"us"
|
||||||
@@ -10540,7 +10523,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "User does not exist",
|
"absenceStrs": "User does not exist",
|
||||||
"alexaRank": 177522,
|
"alexaRank": 177522,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://rpggeek.com/user/{username}",
|
"url": "https://rpggeek.com/user/{username}",
|
||||||
"urlMain": "https://rpggeek.com",
|
"urlMain": "https://rpggeek.com",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -10548,13 +10530,13 @@
|
|||||||
},
|
},
|
||||||
"RPGRussia": {
|
"RPGRussia": {
|
||||||
"disabled": true,
|
"disabled": true,
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru",
|
"ru",
|
||||||
"us"
|
"us"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 256354,
|
"alexaRank": 256354,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://rpgrussia.com",
|
"urlMain": "https://rpgrussia.com",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -11240,13 +11222,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Rusfishing": {
|
"Rusfishing": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
||||||
"alexaRank": 77147,
|
"alexaRank": 77147,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://www.rusfishing.ru/forum/members/?username={username}",
|
"url": "https://www.rusfishing.ru/forum/members/?username={username}",
|
||||||
"urlMain": "https://www.rusfishing.ru",
|
"urlMain": "https://www.rusfishing.ru",
|
||||||
"usernameClaimed": "ale8443",
|
"usernameClaimed": "ale8443",
|
||||||
@@ -11545,12 +11527,12 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Sexforum.ws": {
|
"Sexforum.ws": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 1815966,
|
"alexaRank": 1815966,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "http://sexforum.ws",
|
"urlMain": "http://sexforum.ws",
|
||||||
"usernameClaimed": "katrin1988",
|
"usernameClaimed": "katrin1988",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -12129,7 +12111,7 @@
|
|||||||
"us"
|
"us"
|
||||||
],
|
],
|
||||||
"headers": {
|
"headers": {
|
||||||
"authorization": "Bearer BQCyNy7oN-nOZ-rNK_jL0R4GHS7f3uWdK8AdxZ9m-pg9dbm7t-mLNaaHCG2BpDeV4AekGfl4AscbXLMqeB4"
|
"authorization": "Bearer BQD2HAPvSlZkuoFflR2L6YOns9-DRL_YSCCpmyozsml_FZYf8sICoKQpz3JqJ2JHrlUMm9K56bgw2BPbyJg"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"Spotify is currently not available in your country.": "Access denied in your country, use proxy/vpn"
|
"Spotify is currently not available in your country.": "Access denied in your country, use proxy/vpn"
|
||||||
@@ -13095,13 +13077,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"TotalStavki": {
|
"TotalStavki": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
],
|
],
|
||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
||||||
"alexaRank": 5459551,
|
"alexaRank": 5459551,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://totalstavki.ru/forum/members/?username={username}",
|
"url": "https://totalstavki.ru/forum/members/?username={username}",
|
||||||
"urlMain": "https://totalstavki.ru",
|
"urlMain": "https://totalstavki.ru",
|
||||||
"usernameClaimed": "turbo",
|
"usernameClaimed": "turbo",
|
||||||
@@ -13431,7 +13413,7 @@
|
|||||||
"sec-ch-ua": "Google Chrome\";v=\"87\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"87\"",
|
"sec-ch-ua": "Google Chrome\";v=\"87\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"87\"",
|
||||||
"authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
|
"authorization": "Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA",
|
||||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
||||||
"x-guest-token": "1373570939997335554"
|
"x-guest-token": "1381699376133857282"
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
"Bad guest token": "x-guest-token update required"
|
"Bad guest token": "x-guest-token update required"
|
||||||
@@ -13778,6 +13760,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"VideogameGeek": {
|
"VideogameGeek": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"gaming",
|
"gaming",
|
||||||
"us"
|
"us"
|
||||||
@@ -13785,7 +13768,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "User does not exist",
|
"absenceStrs": "User does not exist",
|
||||||
"alexaRank": 719092,
|
"alexaRank": 719092,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://videogamegeek.com/user/{username}",
|
"url": "https://videogamegeek.com/user/{username}",
|
||||||
"urlMain": "https://videogamegeek.com",
|
"urlMain": "https://videogamegeek.com",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -13808,7 +13790,7 @@
|
|||||||
"video"
|
"video"
|
||||||
],
|
],
|
||||||
"headers": {
|
"headers": {
|
||||||
"Authorization": "jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MTYzMjE3MDAsInVzZXJfaWQiOm51bGwsImFwcF9pZCI6NTg0NzksInNjb3BlcyI6InB1YmxpYyIsInRlYW1fdXNlcl9pZCI6bnVsbH0.yS9-vO94E_Ad_e2krnmOoqXWcaLxhZSrRvjUVHkgIPk"
|
"Authorization": "jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MTgyNTg2ODAsInVzZXJfaWQiOm51bGwsImFwcF9pZCI6NTg0NzksInNjb3BlcyI6InB1YmxpYyIsInRlYW1fdXNlcl9pZCI6bnVsbH0.gRqKPO3uS5pqVzYh0lHOGKSUAwq5dfIu7q7yfxoIgEE"
|
||||||
},
|
},
|
||||||
"activation": {
|
"activation": {
|
||||||
"url": "https://vimeo.com/_rv/viewer",
|
"url": "https://vimeo.com/_rv/viewer",
|
||||||
@@ -13893,13 +13875,13 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Vlmi": {
|
"Vlmi": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru",
|
"ru",
|
||||||
"ua"
|
"ua"
|
||||||
],
|
],
|
||||||
"engine": "XenForo",
|
"engine": "XenForo",
|
||||||
"alexaRank": 725829,
|
"alexaRank": 725829,
|
||||||
"ignore403": true,
|
|
||||||
"urlMain": "https://vlmi.biz",
|
"urlMain": "https://vlmi.biz",
|
||||||
"usernameClaimed": "mixa",
|
"usernameClaimed": "mixa",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
@@ -14516,6 +14498,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"Wuz": {
|
"Wuz": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"by",
|
"by",
|
||||||
"ru"
|
"ru"
|
||||||
@@ -14523,7 +14506,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
"absenceStrs": "\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
||||||
"alexaRank": 1927898,
|
"alexaRank": 1927898,
|
||||||
"ignore403": true,
|
|
||||||
"url": "http://wuz.by/forum/members/?username={username}",
|
"url": "http://wuz.by/forum/members/?username={username}",
|
||||||
"urlMain": "http://wuz.by",
|
"urlMain": "http://wuz.by",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -15107,6 +15089,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"australianfrequentflyer.com.au": {
|
"australianfrequentflyer.com.au": {
|
||||||
|
"disabled": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"au"
|
"au"
|
||||||
],
|
],
|
||||||
@@ -15978,6 +15961,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"forums.battlefield.com": {
|
"forums.battlefield.com": {
|
||||||
|
"disabled": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"gaming",
|
"gaming",
|
||||||
"gb",
|
"gb",
|
||||||
@@ -16069,6 +16053,7 @@
|
|||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
"forums.overclockers.co.uk": {
|
"forums.overclockers.co.uk": {
|
||||||
|
"ignore403": true,
|
||||||
"tags": [
|
"tags": [
|
||||||
"gb",
|
"gb",
|
||||||
"uk"
|
"uk"
|
||||||
@@ -16076,7 +16061,6 @@
|
|||||||
"checkType": "message",
|
"checkType": "message",
|
||||||
"absenceStrs": "The specified member cannot be found. Please enter a member's entire name.",
|
"absenceStrs": "The specified member cannot be found. Please enter a member's entire name.",
|
||||||
"alexaRank": 10013,
|
"alexaRank": 10013,
|
||||||
"ignore403": true,
|
|
||||||
"url": "https://forums.overclockers.co.uk/members/?username={username}",
|
"url": "https://forums.overclockers.co.uk/members/?username={username}",
|
||||||
"urlMain": "https://forums.overclockers.co.uk",
|
"urlMain": "https://forums.overclockers.co.uk",
|
||||||
"usernameClaimed": "adam",
|
"usernameClaimed": "adam",
|
||||||
@@ -23481,6 +23465,42 @@
|
|||||||
"urlMain": "https://skyblock.net",
|
"urlMain": "https://skyblock.net",
|
||||||
"usernameClaimed": "alex",
|
"usernameClaimed": "alex",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
|
},
|
||||||
|
"codeberg.org": {
|
||||||
|
"checkType": "message",
|
||||||
|
"presenseStrs": [
|
||||||
|
"user profile",
|
||||||
|
" username text center"
|
||||||
|
],
|
||||||
|
"absenceStrs": [
|
||||||
|
"og:description",
|
||||||
|
" ui centered image"
|
||||||
|
],
|
||||||
|
"url": "https://codeberg.org/{username}",
|
||||||
|
"urlMain": "https://codeberg.org",
|
||||||
|
"usernameClaimed": "pcastela",
|
||||||
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
|
},
|
||||||
|
"1x": {
|
||||||
|
"tags": [
|
||||||
|
"photo"
|
||||||
|
],
|
||||||
|
"checkType": "message",
|
||||||
|
"presenseStrs": [
|
||||||
|
" onload=",
|
||||||
|
"photos-feed",
|
||||||
|
"gallery-loadmore",
|
||||||
|
"lm_mode",
|
||||||
|
"create_exhibition_name"
|
||||||
|
],
|
||||||
|
"absenceStrs": [
|
||||||
|
"1x.com \u2022 In Pursuit of the Sublime",
|
||||||
|
" >404</div>"
|
||||||
|
],
|
||||||
|
"url": "https://1x.com/{username}",
|
||||||
|
"urlMain": "https://1x.com",
|
||||||
|
"usernameClaimed": "michaelafiresova",
|
||||||
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ class QueryResult():
|
|||||||
'tags': self.tags,
|
'tags': self.tags,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def is_found(self):
|
||||||
|
return self.status == QueryStatus.CLAIMED
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Convert Object To String.
|
"""Convert Object To String.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ class MaigretSite:
|
|||||||
|
|
||||||
self.disabled = False
|
self.disabled = False
|
||||||
self.similar_search = False
|
self.similar_search = False
|
||||||
self.ignore_403 = False
|
self.ignore403 = False
|
||||||
self.tags = []
|
self.tags = []
|
||||||
|
|
||||||
self.type = 'username'
|
self.type = 'username'
|
||||||
|
|||||||
+3
-5
@@ -27,7 +27,6 @@ def extract_mainpage_url(url):
|
|||||||
|
|
||||||
|
|
||||||
async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=False):
|
async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=False):
|
||||||
query_notify = Mock()
|
|
||||||
changes = {
|
changes = {
|
||||||
'disabled': False,
|
'disabled': False,
|
||||||
}
|
}
|
||||||
@@ -41,10 +40,9 @@ async def site_self_check(site, logger, semaphore, db: MaigretDatabase, silent=F
|
|||||||
|
|
||||||
for username, status in check_data:
|
for username, status in check_data:
|
||||||
results_dict = await maigret(
|
results_dict = await maigret(
|
||||||
username,
|
username=username,
|
||||||
{site.name: site},
|
site_dict={site.name: site},
|
||||||
query_notify,
|
logger=logger,
|
||||||
logger,
|
|
||||||
timeout=30,
|
timeout=30,
|
||||||
id_type=site.type,
|
id_type=site.type,
|
||||||
forced=True,
|
forced=True,
|
||||||
|
|||||||
+1
-1
@@ -67,7 +67,7 @@ def get_dict_ascii_tree(items, prepend='', new_line=True):
|
|||||||
if field_value.startswith('[\''):
|
if field_value.startswith('[\''):
|
||||||
is_last_item = num == len(items) - 1
|
is_last_item = num == len(items) - 1
|
||||||
prepend_symbols = ' ' * 3 if is_last_item else ' ┃ '
|
prepend_symbols = ' ' * 3 if is_last_item else ' ┃ '
|
||||||
field_value = print_ascii_tree(eval(field_value), prepend_symbols)
|
field_value = get_dict_ascii_tree(eval(field_value), prepend_symbols)
|
||||||
text += f'\n{prepend}{box_symbol}{field_name}: {field_value}'
|
text += f'\n{prepend}{box_symbol}{field_name}: {field_value}'
|
||||||
else:
|
else:
|
||||||
text += f'\n{prepend}{box_symbol} {item}'
|
text += f'\n{prepend}{box_symbol} {item}'
|
||||||
|
|||||||
+2
-4
@@ -14,21 +14,19 @@ future-annotations==1.0.0
|
|||||||
html5lib==1.1
|
html5lib==1.1
|
||||||
idna==2.10
|
idna==2.10
|
||||||
Jinja2==2.11.3
|
Jinja2==2.11.3
|
||||||
lxml==4.6.2
|
lxml==4.6.3
|
||||||
MarkupSafe==1.1.1
|
MarkupSafe==1.1.1
|
||||||
mock==4.0.2
|
mock==4.0.2
|
||||||
multidict==5.1.0
|
multidict==5.1.0
|
||||||
Pillow==8.1.1
|
|
||||||
pycountry==20.7.3
|
pycountry==20.7.3
|
||||||
PyPDF2==1.26.0
|
PyPDF2==1.26.0
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
python-bidi==0.4.2
|
python-bidi==0.4.2
|
||||||
python-socks==1.1.2
|
python-socks==1.1.2
|
||||||
reportlab==3.5.59
|
|
||||||
requests>=2.24.0
|
requests>=2.24.0
|
||||||
requests-futures==1.0.0
|
requests-futures==1.0.0
|
||||||
six==1.15.0
|
six==1.15.0
|
||||||
socid-extractor>=0.0.15
|
socid-extractor>=0.0.16
|
||||||
soupsieve==2.1
|
soupsieve==2.1
|
||||||
stem==1.8.0
|
stem==1.8.0
|
||||||
torrequest==0.1.0
|
torrequest==0.1.0
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ with open('requirements.txt') as rf:
|
|||||||
requires = rf.read().splitlines()
|
requires = rf.read().splitlines()
|
||||||
|
|
||||||
setup(name='maigret',
|
setup(name='maigret',
|
||||||
version='0.1.15',
|
version='0.1.19',
|
||||||
description='Collect a dossier on a person by username from a huge number of sites',
|
description='Collect a dossier on a person by username from a huge number of sites',
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
long_description_content_type="text/markdown",
|
long_description_content_type="text/markdown",
|
||||||
|
|||||||
@@ -26,6 +26,13 @@ def test_case_convert_snake_to_title():
|
|||||||
assert b == 'Camel cased string'
|
assert b == 'Camel cased string'
|
||||||
|
|
||||||
|
|
||||||
|
def test_case_convert_camel_with_digits_to_snake():
|
||||||
|
a = 'ignore403'
|
||||||
|
b = CaseConverter.camel_to_snake(a)
|
||||||
|
|
||||||
|
assert b == 'ignore403'
|
||||||
|
|
||||||
|
|
||||||
def test_is_country_tag():
|
def test_is_country_tag():
|
||||||
assert is_country_tag('ru') == True
|
assert is_country_tag('ru') == True
|
||||||
assert is_country_tag('FR') == True
|
assert is_country_tag('FR') == True
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import asyncio
|
||||||
|
import logging
|
||||||
|
import maigret
|
||||||
|
|
||||||
|
|
||||||
|
# top popular sites from the Maigret database
|
||||||
|
TOP_SITES_COUNT = 300
|
||||||
|
# Maigret HTTP requests timeout
|
||||||
|
TIMEOUT = 10
|
||||||
|
# max parallel requests
|
||||||
|
MAX_CONNECTIONS = 50
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# setup logging and asyncio
|
||||||
|
logger = logging.getLogger('maigret')
|
||||||
|
logger.setLevel(logging.WARNING)
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
|
# setup Maigret
|
||||||
|
db = maigret.MaigretDatabase().load_from_file('./maigret/resources/data.json')
|
||||||
|
# also can be downloaded from web
|
||||||
|
# db = MaigretDatabase().load_from_url(MAIGRET_DB_URL)
|
||||||
|
|
||||||
|
# user input
|
||||||
|
username = input('Enter username to search: ')
|
||||||
|
|
||||||
|
sites_count_raw = input(f'Select the number of sites to search ({TOP_SITES_COUNT} for default, {len(db.sites_dict)} max): ')
|
||||||
|
sites_count = int(sites_count_raw) or TOP_SITES_COUNT
|
||||||
|
|
||||||
|
sites = db.ranked_sites_dict(top=sites_count)
|
||||||
|
|
||||||
|
show_progressbar_raw = input('Do you want to show a progressbar? [Yn] ')
|
||||||
|
show_progressbar = show_progressbar_raw.lower() != 'n'
|
||||||
|
|
||||||
|
extract_info_raw = input('Do you want to extract additional info from accounts\' pages? [Yn] ')
|
||||||
|
extract_info = extract_info_raw.lower() != 'n'
|
||||||
|
|
||||||
|
use_notifier_raw = input('Do you want to use notifier for displaying results while searching? [Yn] ')
|
||||||
|
use_notifier = use_notifier_raw.lower() != 'n'
|
||||||
|
|
||||||
|
notifier = None
|
||||||
|
if use_notifier:
|
||||||
|
notifier = maigret.Notifier(print_found_only=True, skip_check_errors=True)
|
||||||
|
|
||||||
|
# search!
|
||||||
|
search_func = maigret.search(username=username,
|
||||||
|
site_dict=sites,
|
||||||
|
timeout=TIMEOUT,
|
||||||
|
logger=logger,
|
||||||
|
max_connections=MAX_CONNECTIONS,
|
||||||
|
query_notify=notifier,
|
||||||
|
no_progressbar=(not show_progressbar),
|
||||||
|
is_parsing_enabled=extract_info,
|
||||||
|
)
|
||||||
|
|
||||||
|
results = loop.run_until_complete(search_func)
|
||||||
|
|
||||||
|
input('Search completed. Press any key to show results.')
|
||||||
|
|
||||||
|
for sitename, data in results.items():
|
||||||
|
is_found = data['status'].is_found()
|
||||||
|
print(f'{sitename} - {"Found!" if is_found else "Not found"}')
|
||||||
Reference in New Issue
Block a user