1515 Commits
Author SHA1 Message Date
dependabot[bot]andGitHub 3a5aba94cf build(deps): bump platformdirs from 4.11.2 to 4.11.3 (#2980) 2026-08-17 09:23:49 +02:00
dependabot[bot]andGitHub f6beba6f9c build(deps-dev): bump pytest-rerunfailures from 16.4 to 16.5 (#2979) 2026-08-17 09:22:50 +02:00
dependabot[bot]andGitHub c04e679c4c build(deps): bump aiohttp-socks from 0.11.0 to 0.12.0 (#2978) 2026-08-17 09:22:06 +02:00
SoxojandGitHub c983544557 Declare python-dateutil as a direct dependency (#2977)
maigret/report.py imports dateutil.tz and dateutil.parser directly, but python-dateutil is not listed in pyproject.toml. It resolves today only because socid-extractor requires it transitively, so a first-party import is riding on a second-party dependency staying put.

Constraint is >=2.8.1, the same floor socid-extractor already asks for, with no upper bound. poetry.lock changes only its content-hash: python-dateutil 2.9.0.post0 was already locked in the main group, so no installed version moves.
nightly-main
2026-08-16 11:57:56 +02:00
SoxojandGitHub dbbc8adf5a Add system settings path and document offline test runs (#2974)
* Add /etc/maigret/settings.json to the settings search path

* Register the slow marker and document offline test runs
2026-08-15 19:41:06 +02:00
SoxojandGitHub e1c80a7a42 Move snapcraft.yaml to snap/, migrate to core24 (#2975) 2026-08-15 19:40:31 +02:00
SoxojandGitHub d7f759a239 Keep runtime activation tokens out of the sites database (#2973)
* Keep runtime activation tokens out of the sites database

* Document the activation token cache
2026-08-15 12:43:30 +02:00
203e26cc2f Updated site list and statistics (#2972)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-15 12:09:53 +02:00
KaifandGitHub c934693fce fix: probe HuggingFace via the API endpoint (#2957)
The profile route returns 200 for reserved paths (models, pricing, docs) and for
organization pages, so all of them were reported as user accounts. Checking
/api/users/{username}/overview instead returns 404 for those, while `url` stays
the profile page so reports keep linking to a readable page.
2026-08-14 22:13:59 +02:00
felipeandGitHub b84d61331f ci: publish dev builds as nightly prereleases (#2959) (#2963) 2026-08-14 22:10:53 +02:00
SoxojandGitHub 23077d2025 Update of README (#2971) 2026-08-14 16:09:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ac03d4013d build(deps): bump platformdirs from 4.11.1 to 4.11.2 (#2970)
Bumps [platformdirs](https://github.com/tox-dev/platformdirs) from 4.11.1 to 4.11.2.
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.11.1...4.11.2)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-version: 4.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-14 09:19:29 +02:00
SoxojandGitHub b69f70f942 Add "Fork me on GitHub" ribbon to web interface (#2969) 2026-08-12 23:10:12 +02:00
felipeandGitHub 46c90bd2cc docs: link to socid-extractor readthedocs pages (#2927) (#2967) 2026-08-12 17:15:58 +02:00
b6fe0cd0e3 Fix ReverbNation false-positive check (#2929)
Co-authored-by: Julio César Suástegui <juliosuas@users.noreply.github.com>
2026-08-12 17:10:06 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
da6e498872 build(deps): bump pyinstaller from 6.21.0 to 6.22.0 (#2964)
Bumps [pyinstaller](https://github.com/pyinstaller/pyinstaller) from 6.21.0 to 6.22.0.
- [Release notes](https://github.com/pyinstaller/pyinstaller/releases)
- [Changelog](https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst)
- [Commits](https://github.com/pyinstaller/pyinstaller/compare/v6.21.0...v6.22.0)

---
updated-dependencies:
- dependency-name: pyinstaller
  dependency-version: 6.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-12 17:06:13 +02:00
felipeandGitHub 77b565cfd5 fix: normalize SOCKS5 proxy scheme per HTTP transport (#2955) (#2966) 2026-08-12 17:04:32 +02:00
Soxoj e0dbef865c Improved release documentation 2026-08-11 18:57:43 +02:00
SoxojandGitHub 089f5abe9a Bump to 0.6.4 (#2960) 2026-08-11 18:18:35 +02:00
SoxojandGitHub 8518622933 Fix site checks: 9 fixed, 4 disabled; git hook update (#2956)
Closes #2941, #2950, #2918, #2913, #2905, #2897
2026-08-11 15:51:31 +02:00
SoxojandGitHub fbda9cdfcc fix: retry transient network/proxy errors in site checkers (#2954)
Rotating/residential proxies often drop a connection mid-request
(truncated body, closed socket, failed handshake) instead of failing
outright. These were previously lumped into "Unexpected" and never
retried, silently discarding otherwise-successful checks.

- Retry once on ClientPayloadError, ServerDisconnectedError, and
  aiohttp_socks' ProxyConnectionError/ProxyTimeoutError (aiohttp
  checker), and on CurlError (curl_cffi checker) — covers truncated
  responses, dropped connections, CONNECT-tunnel 502s, and TLS
  handshake failures.
- Fix the proxy-error except clause: it caught python_socks'
  ProxyError, but aiohttp_socks (the connector actually in use)
  raises its own unrelated same-named exceptions, so it never fired.
- Generic ProxyError (e.g. bad credentials) is classified but NOT
  retried — it fails identically every attempt.
2026-08-11 13:16:13 +02:00
SoxojandGitHub af13058cfe Update sponsorship information (#2953) 2026-08-11 11:14:46 +02:00
SoxojandGitHub 5387790810 Improved documentation, added quick link to deploy Maigret web to Readme (#2952)
* Improved documentation, added quick link to deploy Maigret web to Readme

* Move Render config file to utils/
2026-08-11 10:56:16 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fea4759a03 build(deps): bump platformdirs from 4.11.0 to 4.11.1 (#2951)
Bumps [platformdirs](https://github.com/tox-dev/platformdirs) from 4.11.0 to 4.11.1.
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/platformdirs/compare/4.11.0...4.11.1)

---
updated-dependencies:
- dependency-name: platformdirs
  dependency-version: 4.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 09:31:36 +02:00
Julio César SuásteguiandGitHub 34a1669974 Fix XMind reports for modern readers (#2930)
* fix(report): add XMind manifest for modern readers

* docs: document modern XMind reader compatibility
2026-08-10 22:54:35 +02:00
e468267146 Updated site list and statistics (#2949)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-10 20:19:04 +02:00
819ceed272 fix: use /data/profile urlProbe for Instapaper false-positive (#2915) (#2937)
Co-authored-by: Soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-10 19:14:30 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7c34b8042a build(deps): bump pypdf from 6.14.2 to 6.15.0 (#2943)
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.14.2 to 6.15.0.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.14.2...6.15.0)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.15.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 11:45:37 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
9d6c7cc897 build(deps): update chardet requirement from >=7.4.3 to >=7.5.1 (#2944)
Updates the requirements on [chardet](https://github.com/chardet/chardet) to permit the latest version.
- [Release notes](https://github.com/chardet/chardet/releases)
- [Changelog](https://github.com/chardet/chardet/blob/main/docs/changelog.rst)
- [Commits](https://github.com/chardet/chardet/compare/7.4.3...7.5.1)

---
updated-dependencies:
- dependency-name: chardet
  dependency-version: 7.5.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 11:45:17 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5f3e6dec4d build(deps): bump soupsieve from 2.9.1 to 2.9.2 (#2945)
Bumps [soupsieve](https://github.com/facelessuser/soupsieve) from 2.9.1 to 2.9.2.
- [Release notes](https://github.com/facelessuser/soupsieve/releases)
- [Commits](https://github.com/facelessuser/soupsieve/compare/2.9.1...2.9.2)

---
updated-dependencies:
- dependency-name: soupsieve
  dependency-version: 2.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 11:45:06 +02:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c295c1cade build(deps-dev): bump coverage from 7.15.3 to 7.15.4 (#2946)
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.3 to 7.15.4.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.3...7.15.4)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.15.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 11:44:57 +02:00
SoxojandGitHub 1171dbdb84 Sponsorship details update in README (#2939) 2026-08-08 02:07:11 +07:00
67c8df1757 Updated site list and statistics (#2935)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-07 17:09:36 +09:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c9d58de7ca build(deps): bump curl-cffi from 0.15.0 to 0.16.0 (#2931)
Bumps [curl-cffi](https://github.com/lexiforest/curl_cffi) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/lexiforest/curl_cffi/releases)
- [Changelog](https://github.com/lexiforest/curl_cffi/blob/main/docs/changelog.rst)
- [Commits](https://github.com/lexiforest/curl_cffi/compare/v0.15.0...v0.16.0)

---
updated-dependencies:
- dependency-name: curl-cffi
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 19:18:19 +09:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cfa18a380f build(deps): bump svglib from 2.0.2 to 2.1.0 (#2933)
Bumps [svglib](https://github.com/deeplook/svglib) from 2.0.2 to 2.1.0.
- [Release notes](https://github.com/deeplook/svglib/releases)
- [Changelog](https://github.com/deeplook/svglib/blob/main/CHANGELOG.md)
- [Commits](https://github.com/deeplook/svglib/compare/v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: svglib
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 19:17:59 +09:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2ca87d0b87 build(deps): bump cryptography from 48.0.1 to 50.0.0 (#2932)
Bumps [cryptography](https://github.com/pyca/cryptography) from 48.0.1 to 50.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/48.0.1...50.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 50.0.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 19:17:24 +09:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
69ea495fa1 build(deps-dev): bump coverage from 7.15.2 to 7.15.3 (#2934)
Bumps [coverage](https://github.com/coveragepy/coveragepy) from 7.15.2 to 7.15.3.
- [Release notes](https://github.com/coveragepy/coveragepy/releases)
- [Changelog](https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst)
- [Commits](https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.3)

---
updated-dependencies:
- dependency-name: coverage
  dependency-version: 7.15.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 19:16:59 +09:00
75baf29b02 Fix Omg.lol false-positive check (#2922)
Co-authored-by: Soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-03 08:49:45 +09:00
Sanjay SanthanamandGitHub e08310da87 fix: don't let the SUPPORTED_IDS branch re-add a rejected username in extract_ids_from_page (#2924)
extract_ids_from_page() has the same bug #2907 fixed in
checking.py::parse_usernames(). "username" is itself in SUPPORTED_IDS, so
the `if k in SUPPORTED_IDS` loop stores a bare `username` value directly,
bypassing the is_plausible_username() guard that extract_usernames()
applies in its own separate pass. A URL or email returned by
socid_extractor under a bare `username` key therefore becomes a recursive
search target via `maigret --parse-url`, reproducing the #1403
false-error cascade.

Skip keys containing "username" in the SUPPORTED_IDS loop; those are
already owned (and validated) by extract_usernames(). Every other
SUPPORTED_ID (gaia_id, vk_id, orcid, ...) is unaffected since none of
those keys contain "username".

Add regression tests for the bare `username` key with a URL value and for
the unchanged handling of other supported IDs.

Closes #2911
2026-08-03 08:43:50 +09:00
SoxojandGitHub d1b8b9fa5c Web interface update: live scan, settings perseistence, history, nagivation (#2925) 2026-08-03 08:41:07 +09:00
9b6c5381fa Updated site list and statistics (#2921)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-08-03 02:24:35 +09:00
zsxh1990andGitHub 6fa6b6d4c5 fix: disable PulmonaryHypertensionNews (false-positive, 403 protection) (#2917)
Closes #2916

Site returns 403 for all usernames (both claimed and unclaimed).
The site is behind TLS fingerprint protection and cannot be reliably checked.
Disabled to prevent false-positive results.

Signed-off-by: zsxh1990 <445655361@qq.com>
2026-08-02 12:15:13 +09:00
b186b77974 [ImgBot] Optimize images (#2912)
*Total -- 813.59kb -> 719.41kb (11.58%)

/static/web_interface_screenshot_start.png -- 312.48kb -> 274.81kb (12.06%)
/static/web_interface_screenshot.png -- 501.11kb -> 444.61kb (11.28%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2026-07-28 01:32:13 +05:00
SoxojandGitHub c2e24f3218 Fix site checks: 9 fixed, 1 disabled (#2914) 2026-07-28 01:31:57 +05:00
AshvinandGitHub 0fd5bf66e8 fix: block SSRF / local-file reads via report image URLs during PDF generation (#2908)
* fix: block SSRF and local-file reads via report image URLs in PDF generation

save_pdf_report() rendered scraped profile image URLs (ids_data['image'])
straight into xhtml2pdf, which fetches <img src> while building the PDF.
The image field is attacker-influenced and pisaDocument ran with no
link_callback, so a profile carrying image = "file:///etc/passwd" or an
intranet/metadata URL turned report generation into a local file read or
an SSRF from the machine running maigret. In the web UI this is
server-side and fires on every search, since save_pdf_report is always
called.

Add a link_callback that only lets public http(s) images through and
diverts everything else (file://, data:, other schemes, and hosts that
resolve to loopback/private/link-local/reserved addresses) to a bundled
1x1 placeholder, so no fetch or read happens. Diverting rather than
raising keeps report generation working when a scanned profile carries a
hostile image URL.

Tests cover the URL classifier, the callback's placeholder diversion, and
an end-to-end check that PDF generation does not fetch an internal image.

* fix: use is_global to also block CGNAT (100.64.0.0/10) report image hosts

The flag chain missed 100.64.0.0/10, which is neither is_private nor
is_global and is routable inside many cloud and k8s networks. is_global
covers it along with private, loopback, link-local and unspecified.

Multicast and reserved stay explicit: both are still is_global on
CPython, and 64:ff9b::/96 reaches IPv4 through a NAT64 gateway.
2026-07-27 17:57:08 +05:00
AshvinandGitHub 76c994f7bc fix: don't let the SUPPORTED_IDS branch re-add a rejected username (#2907)
parse_usernames() validates *_username fields with is_plausible_username
(the #1403 guard), but the trailing `if k in SUPPORTED_IDS` branch runs
unconditionally. Since "username" is itself in SUPPORTED_IDS, the bare
`username` key bypasses the guard: a URL/email/path value is dropped by
the plausibility check and then silently re-added, so it becomes a
recursive search target again and reproduces the #1403 false-error
cascade.

Make the branch an elif. The bare `username` key is already handled with
validation by the first branch; every other SUPPORTED_ID (gaia_id,
vk_id, orcid, ...) still gets added as before since none of those keys
contain "username".

Add a regression test for the bare `username` key with URL/email/path
values; the existing parse_usernames tests only covered *_username
variants, which aren't in SUPPORTED_IDS.
2026-07-27 12:36:30 +05:00
1d2eb39462 Updated site list and statistics (#2910)
Co-authored-by: soxoj <31013580+soxoj@users.noreply.github.com>
2026-07-27 12:07:58 +05:00
SoxojandGitHub 8b263dc960 Fix site checks: 3 fixed, 2 dead deleted (#2909) 2026-07-27 12:02:24 +05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
986a16b228 build(deps): bump pypdf from 6.13.3 to 6.14.2 (#2904)
Bumps [pypdf](https://github.com/py-pdf/pypdf) from 6.13.3 to 6.14.2.
- [Release notes](https://github.com/py-pdf/pypdf/releases)
- [Changelog](https://github.com/py-pdf/pypdf/blob/main/CHANGELOG.md)
- [Commits](https://github.com/py-pdf/pypdf/compare/6.13.3...6.14.2)

---
updated-dependencies:
- dependency-name: pypdf
  dependency-version: 6.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-25 03:10:05 +05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
33140dae27 build(deps): bump aiohttp from 3.14.2 to 3.14.3 (#2903)
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.14.2 to 3.14.3.
- [Changelog](https://github.com/aio-libs/aiohttp/blob/v3.14.3/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.14.2...v3.14.3)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 19:14:14 +05:00