Panduan
Tugas (Token)
Imperva

Incapsula/Imperva

TIP

Buat tugas dengan metode createTask dan dapatkan hasilnya dengan metode getTaskResult.

Note
  • Kami mendukung sensor reese84 dan utmvc
  • UserAgent harus cocok. harap gunakan yang kami dukung
  • Disarankan untuk menggunakan klien TLS yang baik dalam alur kerja Anda

Tipe tugas type adalah sebagai berikut

  • AntiImpervaTaskProxyless

Buat Tugas

Buat tugas dengan createTask.

Struktur Objek Tugas

reese84
PropertiTipeDiperlukanDeskripsi
typeStringYaAntiImpervaTaskProxyless
websiteURLStringYaURL situs web
reeseScriptURLstringYaURL skrip reese84, biasanya memiliki beberapa tanda hubung (-) dan kata-kata acak
scriptstringOpsionalJavaScript yang diperoleh dari permintaan GET ke reeseScriptURL
userAgentstringOpsionalStandarnya adalah windows chrome135, saat ini mendukung windows chrome135 - 147
languagestringOpsionalAccept-Language di header Anda
utmvc
PropertiTipeDiperlukanDeskripsi
typeStringYaAntiImpervaTaskProxyless
websiteURLStringYaURL situs web
scriptURLstringYaURL skrip incapsula, biasanya berisi _Incapsula_Resource
isUtmvcBoolYaHarap atur ke true
cookiesArrayYaSetiap cookie yang namanya dimulai dengan incap_ses_. Pelajari Menggunakan Cookie
userAgentstringOpsionalStandarnya adalah windows chrome135, saat ini mendukung windows chrome135 - 147

Contoh Permintaan dan Respons

// Contoh permintaan
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"
    }
}


// Contoh respons
{
    "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"
    }
}

Mendapatkan Hasil

Setelah Anda memiliki taskId, Anda perlu mengirimkan taskId untuk mengambil solusinya. Struktur respons dijelaskan dalam getTaskResult.

Tergantung pada beban sistem, Anda akan mendapatkan hasilnya dalam interval 3s hingga 10s

Contoh Kode

# pip install curl_cffi
import re
from curl_cffi import requests
from urllib.parse import urlparse
 
api_key = "API_KEY"                         # TODO: kunci api capsolver Anda
proxy = "127.0.0.1:1080"                      # TODO: proxy Anda
website_url = "https://www.targetWebsite.com/"  # TODO: URL situs web target Anda
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("melihat situs web gagal:", res.status_code, res.text)
        return
    reese_url = parse_reese_url_from_html(res.text)
    if not reese_url:
        if not cookie:
            print("reeseScriptUrl tidak ditemukan dari situs web")
        else:
            print("berhasil!")
        return
    print("dapatkan reeseScriptUrl dari html:", 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('kesalahan mendapatkan skrip reese84:', 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("post reese84-payload gagal:", resp.status_code, resp.text)
        return
    data = resp.json()
    token = data.get('token')
    if not token:
        print("post reese84-payload gagal:", resp.status_code, resp.text)
        return
    return token
 
 
def parse_reese_url_from_html(html):
    # TODO: Tetapkan aturan untuk situs target Anda
    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("Gagal membuat tugas:", res.text)
        return
    print(f"Mendapatkan taskId: {task_id} / Mendapatkan hasil...")
    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("Penyelesaian gagal! respons:", 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()