안티 봇 스크린 우회
- 쿠키
- 브라우저 지문
- 기본 창 프레임에서 이루어진 마지막 HTTP 요청의 헤더
해당 기술은 당사가 템플릿을 직접 관리하고 계속 업데이트한다는 점 외에도 당사의 AntiGate 템플릿기술을 기반으로 하고 있습니다. 해당 유형의 작업을 이용하려면 구독을 하셔야 하며, 각 작업당 5 크레딧이 소요됩니다. 구독비는 $9.90부터 시작하며, 5,000건의 바이패스가 포함되어 있습니다. 구독을 원치 않는 경우에는 이 튜토리얼을 사용하여 직접 템플릿을 제작하고 작업당 약 $0.002달러로 사용자의 잔고에서 계속 결제를 진행할 수 있습니다.
오직 고품질의 프록시만 허용되며, 호스트명, "residential proxies", 공유 프록시 풀은 허용되지 않습니다. 미국/유럽에서 VPS를 임대하여 지침에 따라 SQUID 서버를 설치한 경우에는 언제나 제대로 작동합니다. 먼저 작업 실행에 앞서 속도 및 호환성에 대하여 프록시를 확인하여야 합니다. 이때 응답 시간은 1초 미만이어야 하며, 그렇지 않은 경우에는 작업자가 작업을 취소합니다.
웹 사이트가 안티 봇 스크린을 지원하는지 확인하세요:
일부 안티 봇 스크린의 경우, SSL handshake fingerprinting과 같은 고급 지문 기술을 사용하여 웹사이트에 접속하는 SSL/TLS 클라이언트의 유형을 식별합니다. 예를 들어, Chrome 브라우저와 Firefox, CURL은 각각 고유한 지문을 가지고 있으며, 사용자 에이전트보다 낮은 수준의 개념이므로 이 둘을 혼동해서는 안 될 것입니다. 이 경우, 당사의 서비스를 이용하려면 동일한 브라우저 인스턴스를 사용하여 작업자의 세션을 재구성해야 합니다. 대부분의 작업자가 Chrome 브라우저를 사용하므로 NodeJS+Puppeteer+Chromium 또는 Selenium+Chromedriver 번들로 작업을 수행할 수 있으며, 예제가 포함되어 있습니다.
작업 객체
속성 | 유형 | 필수 | 목적 |
---|---|---|---|
type | 문자열 | 예 | AntiBotCookieTask |
websiteURL | 문자열 | 예 | 작업자가 탐색할 대상 웹페이지 주소 |
proxyAddress | 문자열 | 예 | 프록시 IP 주소 ipv4/ipv6. 로컬 네트워크의 호스트명이나 IP 주소는 필요 없습니다. |
proxyPort | 정수 | 예 | 프록시 포트 |
proxyLogin | 문자열 | 예 | 인증이 필요한 프록시 로그인 (기본) |
proxyPassword | 문자열 | 예 | 프록시 비밀번호 |
예제 요청
#pip3 install anticaptchaofficial
from anticaptchaofficial.antibotcookietask import *
import requests
solver = antibotcookieTask()
solver.set_verbose(1)
solver.set_key("API_KEY_HERE")
solver.set_website_url("https://www.somewebsite.com/")
solver.set_proxy_address("1.2.3.4")
solver.set_proxy_port(3128)
solver.set_proxy_login("login")
solver.set_proxy_password("password")
# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)
result = solver.solve_and_return_solution()
if result == 0:
print("could not solve task")
exit()
print(result)
cookies, localStorage, fingerprint = result["cookies"], result["localStorage"], result["fingerprint"]
if len(cookies) == 0:
print("empty cookies, try again")
exit()
cookie_string = '; '.join([f'{key}={value}' for key, value in cookies.items()])
user_agent = fingerprint['self.navigator.userAgent']
print(f"use these cookies for requests: {cookie_string}")
print(f"use this user-agent for requests: {user_agent}")
s = requests.Session()
proxies = {
"http": "http://login:password@1.2.3.4:3128",
"https": "http://login:password@1.2.3.4:3128"
}
s.proxies = proxies
content = s.get("https://www.somewebsite.com/", headers={
"Cookie": cookie_string,
"User-Agent": user_agent
}).text
print(content)
작업 솔루션 객체
속성 | 유형 | 목적 |
---|---|---|
cookies | 객체 | 안티 봇 스크린 뒤에 있는 페이지의 쿠키. 해당 쿠키 모두를 합쳐서 HTTP 요청에 사용합니다. |
localStorage | 객체 | 쿠키와 마찬가지로 최종 페이지에서 가져온 localStorage 값이 있는 객체. |
fingerprint | 객체 | 브라우저 지문 매개변수. 쿠키와 localStorage와 함께 이 매개변수를 사용하여 소프트웨어에서 작업자 브라우저 세션을 재생성할 수 있습니다. HTTP 요청에서 "self.navigator.userAgent" 값을 사용자 에이전트로 사용합니다. |
url | 문자열 | 템플릿이 완료된 페이지의 URL |
lastRequestHeaders | 배열 | 브라우저의 기본 창 프레임에서 웹사이트로 전송된 마지막 요청 헤더 |
응답 예제
{
"errorId": 0,
"status": "ready",
"solution": {
"cookies": {
"some_antibotcookie": "0A8VO9NX5N1s4LRoS4sJlFTCNzLj0dEfA_2whUh0E6ZjgQtM~I1cV7U2IhQx0~jnowNjg-Oi76b-MjYPd1GQAmIxh5-v~33PI8F",
"maybe_another_id": "join_all_cookies_together"
},
"localStorage": {
"some_value": "Might be used too in the future as a method to 'remember' visitors, so we collect it too.",
"what_is_it": "localStorage is a more complex analogue of cookies, allowing to store larger objects in browser memory"
},
"fingerprint": {
"self.navigator.userAgent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
"self.screen.width": 1280,
"self.screen.height": 768,
"self.screen.availWidth": 1280,
"self.screen.availHeight": 768,
"self.screen.availLeft": 0,
"self.screen.availTop": 25,
"self.navigator.vendorSub": "",
"self.navigator.productSub": "20030107",
"self.navigator.vendor": "Google Inc.",
"self.navigator.maxTouchPoints": 0,
"self.navigator.hardwareConcurrency": 8,
"self.navigator.cookieEnabled": true,
"self.navigator.appCodeName": "Mozilla",
"self.navigator.appName": "Netscape",
"self.navigator.appVersion": "5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
"self.navigator.platform": "MacIntel",
"self.navigator.product": "Gecko",
"self.navigator.language": "en-US",
"self.navigator.onLine": true,
"self.navigator.deviceMemory": 4
},
"url": "https://www.thewebsite.com/some/final/path/after_redirects",
"lastRequestHeaders": [
"sec-ch-device-memory: 8",
"sec-ch-ua: \" Not A;Brand\";v=\"99\", \"Chromium\";v=\"101\", \"Google Chrome\";v=\"101\"",
"sec-ch-ua-mobile: ?0",
"sec-ch-ua-arch: \"x86\"",
"sec-ch-ua-platform: \"macOS\"",
"sec-ch-ua-model: \"\"",
"sec-ch-ua-full-version-list: \" Not A;Brand\";v=\"99.0.0.0\", \"Chromium\";v=\"101.0.5005.115\", \"Google Chrome\";v=\"101.0.5005.115\"",
"Upgrade-Insecure-Requests: 1",
"User-Agent: Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
"Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9",
"Sec-Fetch-Site: same-origin",
"Sec-Fetch-Mode: navigate",
"Sec-Fetch-Dest: document",
"Referer: https:\/\/somewebsite.com\/",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: en-US,en;q=0.9",
"Cookie: some_antibotcookie=0A8VO9NX5N1s4LRoS4sJlFTCNzLj0dEfA_2whUh0E6ZjgQtM~I1cV7U2IhQx0~jnowNjg-Oi76b-MjYPd1GQAmIxh5-v~33PI8F"
]
},
"cost": "0.00858",
"ip": "5.25.11.114",
"createTime": 1637841143,
"endTime": 1637841189,
"solveCount": 0
}