Projects STRLCPY maigret Commits cf8d0958
🤬
  • Full CookieJar support with test, +1 site

  • Loading...
  • Soxoj committed 4 years ago
    cf8d0958
    1 parent 36ccafbb
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    maigret/activation.py
     1 +import aiohttp
     2 +from aiohttp import CookieJar
     3 +import asyncio
     4 +import json
     5 +from http.cookiejar import MozillaCookieJar
     6 +from http.cookies import Morsel
     7 + 
    1 8  import requests
    2 9   
    3 10  class ParsingActivator:
    skipped 32 lines
    36 43   csrf = r.json()['csrf']
    37 44   site.get_params['_xfToken'] = csrf
    38 45   
     46 + 
     47 +async def import_aiohttp_cookies(cookiestxt_filename):
     48 + cookies_obj = MozillaCookieJar(cookiestxt_filename)
     49 + cookies_obj.load(ignore_discard=True, ignore_expires=True)
     50 + 
     51 + cookies = CookieJar()
     52 + 
     53 + cookies_list = []
     54 + for domain in cookies_obj._cookies.values():
     55 + for key, cookie in list(domain.values())[0].items():
     56 + c = Morsel()
     57 + c.set(key, cookie.value, cookie.value)
     58 + c['domain'] = cookie.domain
     59 + c['path'] = cookie.path
     60 + cookies_list.append((key, c))
     61 + 
     62 + cookies.update_cookies(cookies_list)
     63 + 
     64 + return cookies
     65 + 
  • ■ ■ ■ ■ ■ ■
    maigret/maigret.py
    skipped 1 lines
    2 2  Maigret main module
    3 3  """
    4 4   
    5  -import aiohttp
    6 5  import asyncio
    7  -import csv
    8  -import http.cookiejar as cookielib
    9  -import json
    10 6  import logging
    11 7  import os
    12 8  import platform
    13 9  import re
    14  -import requests
    15 10  import ssl
    16 11  import sys
     12 +from argparse import ArgumentParser, RawDescriptionHelpFormatter
     13 + 
     14 +import aiohttp
     15 +import requests
    17 16  import tqdm.asyncio
    18  -import xmind
    19 17  from aiohttp_socks import ProxyConnector
    20  -from argparse import ArgumentParser, RawDescriptionHelpFormatter
    21  -from http.cookies import SimpleCookie
    22 18  from mock import Mock
    23 19  from python_socks import _errors as proxy_errors
    24 20  from socid_extractor import parse, extract, __version__ as socid_version
    25 21   
    26  -from .activation import ParsingActivator
     22 +from .activation import ParsingActivator, import_aiohttp_cookies
    27 23  from .notify import QueryNotifyPrint
    28 24  from .report import save_csv_report, save_xmind_report, save_html_report, save_pdf_report, \
    29  - generate_report_context, save_txt_report
     25 + generate_report_context, save_txt_report
    30 26  from .result import QueryResult, QueryStatus
    31 27  from .sites import MaigretDatabase, MaigretSite
    32 28   
    skipped 314 lines
    347 343   # connector = aiohttp.TCPConnector(ssl=False)
    348 344   connector.verify_ssl=False
    349 345   
    350  - cookies_dict = {}
     346 + cookie_jar = None
    351 347   if cookies:
    352  - cookies_obj = cookielib.MozillaCookieJar(cookies)
    353  - cookies_obj.load(ignore_discard=True, ignore_expires=True)
    354  - 
    355  - for c in cookies_obj:
    356  - cookies_dict[c.name] = c.value
     348 + cookie_jar = await import_aiohttp_cookies(cookies)
    357 349   
    358  - session = aiohttp.ClientSession(connector=connector, trust_env=True, cookies=cookies_dict)
     350 + session = aiohttp.ClientSession(connector=connector, trust_env=True, cookie_jar=cookie_jar)
    359 351   
    360 352   if logger.level == logging.DEBUG:
    361 353   future = session.get(url='https://icanhazip.com')
    skipped 24 lines
    386 378   results_site['username'] = username
    387 379   results_site['parsing_enabled'] = recursive_search
    388 380   results_site['url_main'] = site.url_main
    389  - results_site['cookies'] = cookies_dict
     381 + results_site['cookies'] = cookie_jar and cookie_jar.filter_cookies(site.url_main) or None
    390 382   
    391 383   headers = {
    392 384   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11.1; rv:55.0) Gecko/20100101 Firefox/55.0',
    skipped 565 lines
  • ■ ■ ■ ■ ■ ■
    maigret/resources/data.json
    skipped 16119 lines
    16120 16120   "usernameClaimed": "alex",
    16121 16121   "usernameUnclaimed": "noonewouldeverusethis7"
    16122 16122   },
     16123 + "Codeby.net": {
     16124 + "tags": [
     16125 + "ru",
     16126 + "hacking"
     16127 + ],
     16128 + "engine": "XenForo",
     16129 + "urlMain": "https://codeby.net",
     16130 + "usernameClaimed": "pragmalion",
     16131 + "usernameUnclaimed": "noonewouldeverusethis7"
     16132 + },
    16123 16133   "freelance.codeby.net": {
    16124 16134   "tags": [
    16125 16135   "ru"
    skipped 6373 lines
  • ■ ■ ■ ■ ■ ■
    maigret/sites.py
    skipped 1 lines
    2 2  """Maigret Sites Information"""
    3 3  import copy
    4 4  import json
    5  -import operator
    6  -import requests
    7 5  import sys
     6 + 
     7 +import requests
    8 8   
    9 9  from .utils import CaseConverter
    10 10   
    skipped 269 lines
  • ■ ■ ■ ■ ■ ■
    tests/test_activation.py
    1 1  """Maigret activation test functions"""
     2 +import json
     3 +import aiohttp
    2 4  import pytest
    3 5  from mock import Mock
    4 6   
    5  -from maigret.activation import ParsingActivator
     7 +from maigret.activation import ParsingActivator, import_aiohttp_cookies
     8 + 
     9 +COOKIES_TXT = """# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
     10 +# This file can be used by wget, curl, aria2c and other standard compliant tools.
     11 +# Usage Examples:
     12 +# 1) wget -x --load-cookies cookies.txt "https://xss.is/search/"
     13 +# 2) curl --cookie cookies.txt "https://xss.is/search/"
     14 +# 3) aria2c --load-cookies cookies.txt "https://xss.is/search/"
     15 +#
     16 +xss.is FALSE / TRUE 0 xf_csrf test
     17 +xss.is FALSE / TRUE 1642709308 xf_user tset
     18 +.xss.is TRUE / FALSE 0 muchacho_cache test
     19 +.xss.is TRUE / FALSE 1924905600 132_evc test
     20 +httpbin.org FALSE / FALSE 0 a b
     21 +"""
    6 22   
    7 23   
    8 24  @pytest.mark.slow
    skipped 6 lines
    15 31   
    16 32   assert token1 != token2
    17 33   
     34 + 
     35 +@pytest.mark.asyncio
     36 +async def test_import_aiohttp_cookies():
     37 + cookies_filename = 'cookies_test.txt'
     38 + with open(cookies_filename, 'w') as f:
     39 + f.write(COOKIES_TXT)
     40 + 
     41 + cookie_jar = await import_aiohttp_cookies(cookies_filename)
     42 + assert list(cookie_jar._cookies.keys()) == ['xss.is', 'httpbin.org']
     43 + 
     44 + url = 'https://httpbin.org/cookies'
     45 + connector = aiohttp.TCPConnector(ssl=False)
     46 + session = aiohttp.ClientSession(connector=connector, trust_env=True,
     47 + cookie_jar=cookie_jar)
     48 + 
     49 + response = await session.get(url=url)
     50 + result = json.loads(await response.content.read())
     51 + await session.close()
     52 + 
     53 + assert result == {'cookies': {'a': 'b'}}
     54 + 
Please wait...
Page is in error, reload to recover