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
| Eigenschaften | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| type | String | Ja | AntiImpervaTaskProxyless |
| websiteURL | String | Ja | Die Website-URL |
| reeseScriptURL | string | Ja | Die reese84 Skript-URL, sie enthält normalerweise mehrere Bindestriche (-) und zufällige Wörter |
| script | string | Optional | Das JavaScript, das durch eine GET-Anfrage an die reeseScriptURL erhalten wird |
| userAgent | string | Optional | Der Standard ist windows chrome135, derzeit werden windows chrome135 - 147 unterstützt |
| language | string | Optional | Der Accept-Language in Ihren Headern |
utmvc
| Eigenschaften | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| type | String | Ja | AntiImpervaTaskProxyless |
| websiteURL | String | Ja | Die Website-URL |
| scriptURL | string | Ja | Die Skript-URL von Incapsula, sie enthält normalerweise _Incapsula_Resource |
| isUtmvc | Bool | Ja | Bitte auf true setzen |
| cookies | Array | Ja | Jeder Cookie, dessen Name mit incap_ses_ beginnt. Erfahren Sie mehr unter Cookies verwenden |
| userAgent | string | Optional | Der 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()