mirror of
https://github.com/soxoj/maigret.git
synced 2026-05-07 06:24:35 +00:00
Full CookieJar support with test, +1 site
This commit is contained in:
@@ -1,3 +1,10 @@
|
|||||||
|
import aiohttp
|
||||||
|
from aiohttp import CookieJar
|
||||||
|
import asyncio
|
||||||
|
import json
|
||||||
|
from http.cookiejar import MozillaCookieJar
|
||||||
|
from http.cookies import Morsel
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
class ParsingActivator:
|
class ParsingActivator:
|
||||||
@@ -35,3 +42,23 @@ class ParsingActivator:
|
|||||||
r = requests.post(site.activation['url'], headers=headers, cookies=cookies, data=post_data)
|
r = requests.post(site.activation['url'], headers=headers, cookies=cookies, data=post_data)
|
||||||
csrf = r.json()['csrf']
|
csrf = r.json()['csrf']
|
||||||
site.get_params['_xfToken'] = csrf
|
site.get_params['_xfToken'] = csrf
|
||||||
|
|
||||||
|
|
||||||
|
async def import_aiohttp_cookies(cookiestxt_filename):
|
||||||
|
cookies_obj = MozillaCookieJar(cookiestxt_filename)
|
||||||
|
cookies_obj.load(ignore_discard=True, ignore_expires=True)
|
||||||
|
|
||||||
|
cookies = CookieJar()
|
||||||
|
|
||||||
|
cookies_list = []
|
||||||
|
for domain in cookies_obj._cookies.values():
|
||||||
|
for key, cookie in list(domain.values())[0].items():
|
||||||
|
c = Morsel()
|
||||||
|
c.set(key, cookie.value, cookie.value)
|
||||||
|
c['domain'] = cookie.domain
|
||||||
|
c['path'] = cookie.path
|
||||||
|
cookies_list.append((key, c))
|
||||||
|
|
||||||
|
cookies.update_cookies(cookies_list)
|
||||||
|
|
||||||
|
return cookies
|
||||||
|
|||||||
+10
-18
@@ -2,28 +2,24 @@
|
|||||||
Maigret main module
|
Maigret main module
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import aiohttp
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import csv
|
|
||||||
import http.cookiejar as cookielib
|
|
||||||
import json
|
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import re
|
import re
|
||||||
import requests
|
|
||||||
import ssl
|
import ssl
|
||||||
import sys
|
import sys
|
||||||
import tqdm.asyncio
|
|
||||||
import xmind
|
|
||||||
from aiohttp_socks import ProxyConnector
|
|
||||||
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
||||||
from http.cookies import SimpleCookie
|
|
||||||
|
import aiohttp
|
||||||
|
import requests
|
||||||
|
import tqdm.asyncio
|
||||||
|
from aiohttp_socks import ProxyConnector
|
||||||
from mock import Mock
|
from mock import Mock
|
||||||
from python_socks import _errors as proxy_errors
|
from python_socks import _errors as proxy_errors
|
||||||
from socid_extractor import parse, extract, __version__ as socid_version
|
from socid_extractor import parse, extract, __version__ as socid_version
|
||||||
|
|
||||||
from .activation import ParsingActivator
|
from .activation import ParsingActivator, import_aiohttp_cookies
|
||||||
from .notify import QueryNotifyPrint
|
from .notify import QueryNotifyPrint
|
||||||
from .report import save_csv_report, save_xmind_report, save_html_report, save_pdf_report, \
|
from .report import save_csv_report, save_xmind_report, save_html_report, save_pdf_report, \
|
||||||
generate_report_context, save_txt_report
|
generate_report_context, save_txt_report
|
||||||
@@ -347,15 +343,11 @@ async def maigret(username, site_dict, query_notify, logger,
|
|||||||
# connector = aiohttp.TCPConnector(ssl=False)
|
# connector = aiohttp.TCPConnector(ssl=False)
|
||||||
connector.verify_ssl=False
|
connector.verify_ssl=False
|
||||||
|
|
||||||
cookies_dict = {}
|
cookie_jar = None
|
||||||
if cookies:
|
if cookies:
|
||||||
cookies_obj = cookielib.MozillaCookieJar(cookies)
|
cookie_jar = await import_aiohttp_cookies(cookies)
|
||||||
cookies_obj.load(ignore_discard=True, ignore_expires=True)
|
|
||||||
|
|
||||||
for c in cookies_obj:
|
session = aiohttp.ClientSession(connector=connector, trust_env=True, cookie_jar=cookie_jar)
|
||||||
cookies_dict[c.name] = c.value
|
|
||||||
|
|
||||||
session = aiohttp.ClientSession(connector=connector, trust_env=True, cookies=cookies_dict)
|
|
||||||
|
|
||||||
if logger.level == logging.DEBUG:
|
if logger.level == logging.DEBUG:
|
||||||
future = session.get(url='https://icanhazip.com')
|
future = session.get(url='https://icanhazip.com')
|
||||||
@@ -386,7 +378,7 @@ async def maigret(username, site_dict, query_notify, logger,
|
|||||||
results_site['username'] = username
|
results_site['username'] = username
|
||||||
results_site['parsing_enabled'] = recursive_search
|
results_site['parsing_enabled'] = recursive_search
|
||||||
results_site['url_main'] = site.url_main
|
results_site['url_main'] = site.url_main
|
||||||
results_site['cookies'] = cookies_dict
|
results_site['cookies'] = cookie_jar and cookie_jar.filter_cookies(site.url_main) or None
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.1; rv:55.0) Gecko/20100101 Firefox/55.0',
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.1; rv:55.0) Gecko/20100101 Firefox/55.0',
|
||||||
|
|||||||
@@ -16120,6 +16120,16 @@
|
|||||||
"usernameClaimed": "alex",
|
"usernameClaimed": "alex",
|
||||||
"usernameUnclaimed": "noonewouldeverusethis7"
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
},
|
},
|
||||||
|
"Codeby.net": {
|
||||||
|
"tags": [
|
||||||
|
"ru",
|
||||||
|
"hacking"
|
||||||
|
],
|
||||||
|
"engine": "XenForo",
|
||||||
|
"urlMain": "https://codeby.net",
|
||||||
|
"usernameClaimed": "pragmalion",
|
||||||
|
"usernameUnclaimed": "noonewouldeverusethis7"
|
||||||
|
},
|
||||||
"freelance.codeby.net": {
|
"freelance.codeby.net": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"ru"
|
"ru"
|
||||||
|
|||||||
+2
-2
@@ -2,10 +2,10 @@
|
|||||||
"""Maigret Sites Information"""
|
"""Maigret Sites Information"""
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import operator
|
|
||||||
import requests
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
from .utils import CaseConverter
|
from .utils import CaseConverter
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,24 @@
|
|||||||
"""Maigret activation test functions"""
|
"""Maigret activation test functions"""
|
||||||
|
import json
|
||||||
|
import aiohttp
|
||||||
import pytest
|
import pytest
|
||||||
from mock import Mock
|
from mock import Mock
|
||||||
|
|
||||||
from maigret.activation import ParsingActivator
|
from maigret.activation import ParsingActivator, import_aiohttp_cookies
|
||||||
|
|
||||||
|
COOKIES_TXT = """# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
|
||||||
|
# This file can be used by wget, curl, aria2c and other standard compliant tools.
|
||||||
|
# Usage Examples:
|
||||||
|
# 1) wget -x --load-cookies cookies.txt "https://xss.is/search/"
|
||||||
|
# 2) curl --cookie cookies.txt "https://xss.is/search/"
|
||||||
|
# 3) aria2c --load-cookies cookies.txt "https://xss.is/search/"
|
||||||
|
#
|
||||||
|
xss.is FALSE / TRUE 0 xf_csrf test
|
||||||
|
xss.is FALSE / TRUE 1642709308 xf_user tset
|
||||||
|
.xss.is TRUE / FALSE 0 muchacho_cache test
|
||||||
|
.xss.is TRUE / FALSE 1924905600 132_evc test
|
||||||
|
httpbin.org FALSE / FALSE 0 a b
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.slow
|
@pytest.mark.slow
|
||||||
@@ -14,3 +30,24 @@ def test_twitter_activation(default_db):
|
|||||||
token2 = twitter_site.headers['x-guest-token']
|
token2 = twitter_site.headers['x-guest-token']
|
||||||
|
|
||||||
assert token1 != token2
|
assert token1 != token2
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_import_aiohttp_cookies():
|
||||||
|
cookies_filename = 'cookies_test.txt'
|
||||||
|
with open(cookies_filename, 'w') as f:
|
||||||
|
f.write(COOKIES_TXT)
|
||||||
|
|
||||||
|
cookie_jar = await import_aiohttp_cookies(cookies_filename)
|
||||||
|
assert list(cookie_jar._cookies.keys()) == ['xss.is', 'httpbin.org']
|
||||||
|
|
||||||
|
url = 'https://httpbin.org/cookies'
|
||||||
|
connector = aiohttp.TCPConnector(ssl=False)
|
||||||
|
session = aiohttp.ClientSession(connector=connector, trust_env=True,
|
||||||
|
cookie_jar=cookie_jar)
|
||||||
|
|
||||||
|
response = await session.get(url=url)
|
||||||
|
result = json.loads(await response.content.read())
|
||||||
|
await session.close()
|
||||||
|
|
||||||
|
assert result == {'cookies': {'a': 'b'}}
|
||||||
|
|||||||
Reference in New Issue
Block a user