Anleitung
Aufgabe (Token)
Imperva

Incapsula/Imperva

TIPP

Erstellen Sie die Aufgabe mit der createTask-Methode und erhalten Sie das Ergebnis mit der getTaskResult-Methode.

Hinweis
  • Wir unterstützen reese84-Sensoren und utmvc
  • UserAgent muss übereinstimmen. Bitte verwenden Sie den von uns unterstützten
  • Es wird empfohlen, einen guten TLS-Client in Ihrem Workflow zu verwenden

Der Aufgabentyp type ist wie folgt

  • AntiImpervaTaskProxyless

Aufgabe erstellen

Erstellen Sie die Aufgabe mit der createTask.

Aufgabenobjektstruktur

reese84
EigenschaftenTypErforderlichBeschreibung
typeStringJaAntiImpervaTaskProxyless
websiteURLStringJaDie Website-URL
reeseScriptURLstringJaDie reese84 Skript-URL, sie enthält normalerweise mehrere Bindestriche (-) und zufällige Wörter
scriptstringOptionalDas JavaScript, das durch eine GET-Anfrage an die reeseScriptURL erhalten wird
userAgentstringOptionalDer Standard ist windows chrome135, derzeit werden windows chrome135 - 147 unterstützt
languagestringOptionalDer Accept-Language in Ihren Headern
utmvc
EigenschaftenTypErforderlichBeschreibung
typeStringJaAntiImpervaTaskProxyless
websiteURLStringJaDie Website-URL
scriptURLstringJaDie Skript-URL von Incapsula, sie enthält normalerweise _Incapsula_Resource
isUtmvcBoolJaBitte auf true setzen
cookiesArrayJaJeder Cookie, dessen Name mit incap_ses_ beginnt. Erfahren Sie mehr unter Cookies verwenden
userAgentstringOptionalDer Standard ist windows chrome135, derzeit werden windows chrome135 - 147 unterstützt

Beispielanfrage und -antwort

// Beispielanfrage
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
Payload:
{
    "clientKey": "...",
    "task": {
        "type": "AntiImpervaTaskProxyLess",
        "script": "(function() {...",
        "reeseScriptUrl": "https://www.targetWebsite.com/s-weakes-Sir-Day-could-to-thy-them-breame-to-gre/1860025529848880788?s=xlD1csYd",
        "websiteURL": "https://www.targetWebsite.com/",
        "language": "en-US,en;q=0.9",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
    }
}


// Beispielantwort
{
    "errorId": 0,
    "taskId": "...",
    "status": "ready",
    "solution": {
        "reese84Payload": "{\"solution\":{\"interrogation\":{\"p\":\"9pp4bv7Sp0073gA1xoN9Aoo...E\",\"st\":1744612535,\"sr\":3851658681,\"cr\":937075512,\"og\":2},\"version\":\"beta\"},\"old_token\":null,\"error\":null,\"performance\":{\"interrogation\":488}}",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
    }
}

Ergebnisse abrufen

Nachdem Sie die taskId haben, müssen Sie die taskId übermitteln, um die Lösung abzurufen. Die Antwortstruktur wird unter getTaskResult erläutert.

Abhängig von der Systemauslastung erhalten Sie die Ergebnisse innerhalb eines Intervalls von 3s bis 10s.

Beispielcode

# pip install curl_cffi
import re
from curl_cffi import requests
from urllib.parse import urlparse
 
api_key = "API_KEY"                         # TODO: Ihr API-Schlüssel von capsolver
proxy = "127.0.0.1:1080"                      # TODO: Ihr Proxy
website_url = "https://www.targetWebsite.com/"  # TODO: Die URL Ihrer Ziel-Website
default_user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'
 
parsed_url = urlparse(website_url)
website_host = "https://" + parsed_url.hostname
 
session = requests.Session(impersonate="chrome133a")
session.proxies = {
    "http": proxy,
    "https": proxy,
}
 
def view_website(cookie, user_agent):
    headers = {
        '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.7',
        'sec-ch-ua': '"Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
        'sec-ch-ua-mobile': '?0',
        'user-agent': user_agent,
        'sec-ch-ua-platform': '"Windows"',
        'sec-fetch-dest': 'document',
        'sec-fetch-mode': 'navigate',
        'sec-fetch-site': 'none',
        'sec-fetch-user': '?1',
        'upgrade-insecure-requests': '1',
        'accept-language': 'en-US,en;q=0.9',
        'priority': 'u=0, i',
    }
    if cookie:
        headers["cookie"] = "reese84=" + cookie
    res = session.get(website_url, headers=headers, verify=False)
    if res.status_code != 200:
        print("Website anzeigen fehlgeschlagen:", res.status_code, res.text)
        return
    reese_url = parse_reese_url_from_html(res.text)
    if not reese_url:
        if not cookie:
            print("reeseScriptUrl auf Website nicht gefunden")
        else:
            print("Erfolgreich!")
        return
    print("reeseScriptUrl aus HTML erhalten:", reese_url)
    return reese_url
 
 
def get_reese84_script(reese_url, user_agent):
    headers = {
        'sec-ch-ua-platform': '"Windows"',
        'user-agent': user_agent,
        'sec-ch-ua': '"Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
        'sec-ch-ua-mobile': '?0',
        'accept': '*/*',
        'sec-fetch-site': 'same-origin',
        'sec-fetch-mode': 'no-cors',
        'sec-fetch-dest': 'script',
        'referer': website_url,
        'accept-language': 'en-US,en;q=0.9',
    }
    res = session.get(reese_url, headers=headers, verify=False)
    if res.status_code != 200:
        print('reese84 Skript-Fehler beim Abrufen:', res.status_code, res.text)
        return
    return res.text
 
 
def post_reese_payload(reese_url, payload, user_agent):
    if "?" in reese_url:
        reese_url = reese_url.split("?")[0]
    headers = {
        'sec-ch-ua-platform': '"Windows"',
        'user-agent': user_agent,
        'accept': 'application/json; charset=utf-8',
        'sec-ch-ua': '"Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
        'content-type': 'text/plain; charset=utf-8',
        'sec-ch-ua-mobile': '?0',
        'origin': website_host,
        'sec-fetch-site': 'same-origin',
        'sec-fetch-mode': 'cors',
        'sec-fetch-dest': 'empty',
        'referer': website_url,
        'accept-language': 'en-US,en;q=0.9',
        'priority': 'u=1, i',
    }
    resp = session.post(reese_url, headers=headers, data=payload, verify=False)
    if resp.status_code != 200:
        print("reese84-Payload senden fehlgeschlagen:", resp.status_code, resp.text)
        return
    data = resp.json()
    token = data.get('token')
    if not token:
        print("reese84-Payload senden fehlgeschlagen:", resp.status_code, resp.text)
        return
    return token
 
 
def parse_reese_url_from_html(html):
    # TODO: Legen Sie die Regeln für Ihre Ziel-Website fest
    result = re.search(r'scriptElement\.src = "(.*)"', html)
    if not result:
        return
    reese_url = result.group(1)
    if reese_url.startswith("/"):
        reese_url = website_host + reese_url
    return reese_url
 
 
def get_reese84_sensor(reese_url, page_url, script):
    payload = {
        "clientKey": api_key,
        "task": {
            "type": "AntiImpervaTaskProxyLess",
            "reeseScriptUrl": reese_url,
            "websiteURL": page_url,
            "script": script,
        }
    }
    res = requests.post("https://api.capsolver.com/createTask", json=payload)
    resp = res.json()
    task_id = resp.get("taskId")
    if not task_id:
        print("Fehler beim Erstellen der Aufgabe:", res.text)
        return
    print(f"taskId erhalten: {task_id} / Rufe Ergebnis ab...")
    while True:
        payload = {"clientKey": api_key, "taskId": task_id}
        res = requests.post("https://api.capsolver.com/getTaskResult", json=payload, verify=False)
        print(res.text)
        resp = res.json()
        status = resp.get("status")
        if status == "ready":
            return resp.get("solution", "")
        if status == "failed" or resp.get("errorId"):
            print("Lösen fehlgeschlagen! Antwort:", res.text)
            return
 
def main():
    reese_url = view_website("", default_user_agent)
    if not reese_url:
        return
    script = get_reese84_script(reese_url, default_user_agent)
    if not script:
        return
    solution = get_reese84_sensor(reese_url, website_url, script)
    if not solution:
        return
    cookie = post_reese_payload(reese_url, solution["reese84Payload"], solution["userAgent"])
    if not cookie:
        return
    view_website(cookie, solution["userAgent"])
 
if __name__ == '__main__':
    main()