
스크래퍼를 익명화하기 위한 브라우저 핑거프린팅 도구. Apify에서 개발했습니다.
fingerprint-suite는 브라우저 핑거프린트 생성 및 주입을 위한 정성껏 만든 도구 모음입니다.
오늘날 웹사이트는 사용자를 추적하고 식별하기 위해 핑거프린팅을 점점 더 많이 사용하고 있습니다.
fingerprint-suite를 사용하면 브라우저 핑거프린트를 생성하여 브라우저에 주입할 수 있으므로 스크레이퍼가 탐지되지 않도록 운용할 수 있습니다.
핑거프린팅 도구나 유사한 프로젝트에 대해 우리와 함께 일하고 싶으신가요? 채용 중입니다!
fingerprint-suite는 브라우저 핑거프린트 생성 및 주입을 위한 모듈형 도구 키트입니다. 다음 npm 패키지로 구성되어 있으며, 각각 별도로 또는 함께 사용할 수 있습니다.
header-generator: 구성 가능한 현실적인 HTTP 헤더를 생성합니다.fingerprint-generator: HTTP 헤더와 브라우저 JS API에 영향을 주는 현실적인 브라우저 핑거프린트를 생성합니다.fingerprint-injector: Playwright 또는 Puppeteer로 관리되는 브라우저 인스턴스에 브라우저 핑거프린트를 주입합니다.generative-bayesian-network: 현실적인 브라우저 핑거프린트를 생성하는 데 사용되는 베이지안 생성 네트워크의 빠른 구현입니다.다음 예제는 핑거프린팅 도구를 사용하여 Playwright로 관리되는 Chromium 인스턴스를 위장하는 방법을 보여줍니다.
import { chromium } from 'playwright';
import { newInjectedContext } from 'fingerprint-injector';
(async () => {
const browser = await chromium.launch({ headless: false });
const context = await newInjectedContext(browser, {
// Constraints for the generated fingerprint (optional)
fingerprintOptions: {
devices: ['mobile'],
operatingSystems: ['ios'],
},
// Playwright's newContext() options (optional, random example for illustration)
newContextOptions: {
geolocation: {
latitude: 51.50853,
longitude: -0.12574,
},
},
});
const page = await context.newPage();
// ... your code using `page` here
})();
Puppeteer를 사용하는 동일한 예제는 다음과 같습니다.
import puppeteer from 'puppeteer';
import { newInjectedPage } from 'fingerprint-injector';
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await newInjectedPage(browser, {
// constraints for the generated fingerprint
fingerprintOptions: {
devices: ['mobile'],
operatingSystems: ['ios'],
},
});
// ... your code using `page` here
await page.goto('https://example.com');
})();
핑거프린팅 도구에서 버그나 문제를 발견하시면 GitHub에 이슈를 제출해 주세요. 질문이 있으시면 Stack Overflow에 문의하거나 [email protected]으로 연락해 주세요.
코드 기여는 언제나 환영하며, 영원히 찬사를 받게 될 것입니다! 개선 아이디어가 있으시면 이슈를 제출하거나 풀 리퀘스트를 만들어 주세요. 기여 지침과 행동 강령은 CONTRIBUTING.md를 참조하세요.
이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE.md 파일을 참조하세요.