
⛏️ Maigret의 추출 엔진: 모든 프로필 URL을 150개 이상의 사이트에서 구조화된 OSINT 레코드로 변환합니다.
모든 공개 프로필 페이지를 구조화된 계정 레코드로 변환하세요. 사용자 이름, 표시 이름, 바이오, 아바타, 위치, 가입일, 팔로워 수, 외부 링크, 그리고 이름 변경, 재설계, 삭제 후에도 계정을 고유하게 식별하는 안정적인 내부 식별자까지 포함합니다.
socid_extractor는 130개 이상의 플랫폼에서 HTML 페이지와 API 응답을 파싱하여 평평한 기계 판독 가능 계정 필드 딕셔너리를 반환합니다. API 키가 필요 없고, 헤드리스 브라우저도 필요 없습니다. 응답 텍스트에 대한 단일 함수 호출만으로 작동합니다.
유용한 이유
extract() 호출을 사용합니다. 플랫폼별 글루 코드가 필요 없습니다.username, fullname, created_at, is_verified 등)을 사용하므로 다운스트림 파이프라인에서 130개의 매핑이 필요하지 않습니다.Python: 3.10+.
pip install socid-extractor
워크스테이션에서 깔끔한 CLI 설치를 원한다면:
pipx install socid-extractor
최신 개발 버전:
pip install -U git+https://github.com/soxoj/socid-extractor.git
CLI로:
$ socid_extractor --url https://www.deviantart.com/muse1908
country: France
created_at: 2005-06-16 18:17:41
gender: female
username: Muse1908
website: www.patreon.com/musemercier
links: ['https://www.facebook.com/musemercier', 'https://www.instagram.com/muse.mercier/', 'https://www.patreon.com/musemercier']
tagline: Nothing worth having is easy...
Python 라이브러리로:
import requests
import socid_extractor
r = requests.get('https://www.patreon.com/annetlovart')
print(socid_extractor.extract(r.text))
# {'patreon_id': '33913189', 'patreon_username': 'annetlovart',
# 'fullname': 'Annet Lovart',
# 'links': "['https://www.facebook.com/322598031832479', ...]"}
팁 — 배치 실행: --skip-fetch-if-no-url-hint 옵션을 전달하면 URL이 알려진 사이트 힌트와 일치하지 않을 때 HTTP 요청을 건너뜁니다 (더 빠르지만 포럼 템플릿과 같은 일반 엔진을 건너뛸 수 있음):
$ socid_extractor --url https://example.com/foo --skip-fetch-if-no-url-hint
130개 이상의 방식 — 전체 목록은 METHODS.md를 참조하세요.
일부 예시:
…그 외 다수.
데이터 예제는 tests/test_e2e.py를, 파싱 로직은 socid_extractor/schemes.py를, 필드 온톨로지는 FIELDS.md를 참조하세요.
오픈 소스 socid_extractor는 MIT 라이선스로, 제한 없이 상업적 사용이 무료입니다. 그러나 페이지 파서는 플랫폼이 HTML과 API를 변경함에 따라 시간이 지나면서 깨지므로 적극적인 유지보수가 필요합니다.
심각한 상업적 사용을 원하신다면 — 유지보수되는 비공개 플러그인 팩 추가 파서 또는 호스팅 추출 API — 연락 주세요: 📧 [email protected]
socid_extractor를 제품에 통합다음 SOWEL 기술에 매핑됩니다:
pyproject.toml에서 테스트 extras를 설치한 후 pytest를 실행하세요:
pip install '.[test]' # pytest, pytest-rerunfailures, pytest-xdist
python3 -m pytest tests/test_e2e.py -n 10 -k 'not cookies' -m 'not github_failed and not rate_limited'
flake8 / mypy / black (CI에서 사용하는 전체 세트)도 원한다면 pip install '.[dev]'를 대신 사용하세요.
모든 새로운 방식은 tests/test_e2e.py에 실제 URL/API를 대상으로 하는 e2e 테스트가 있어야 합니다. 인라인 픽스처를 사용한 단위 테스트(tests/test_socid_improvements.py)도 필요하지만 e2e 커버리지를 대체하지는 않습니다. 자세한 내용은 docs/testing-and-ci.md를 참조하세요.
개발자 문서 (아키텍처, 모듈, CI)는 docs/에 있습니다.
새로운 방식을 추가하거나 무언가를 수정하려면 기여 가이드를 참조하세요.