गाइड
कार्य(टोकन)
Imperva

इन्कैप्सुला/इम्परवा

टिप

createTask विधि का उपयोग करके कार्य बनाएं और getTaskResult विधि का उपयोग करके परिणाम प्राप्त करें।

ध्यान दें
  • हम reese84 sensors और utmvc का समर्थन करते हैं।
  • UserAgent का मिलान होना चाहिए। कृपया हमारे द्वारा समर्थित का उपयोग करें
  • अपने वर्कफ़्लो में एक अच्छे TLS क्लाइंट का उपयोग करने की सलाह दी जाती है

कार्य प्रकार type इस प्रकार है

  • AntiImpervaTaskProxyless

कार्य बनाएं

createTask विधि से कार्य बनाएं।

कार्य वस्तु संरचना

reese84
गुणधर्मप्रकारआवश्यकविवरण
typeStringहाँAntiImpervaTaskProxyless
websiteURLStringहाँवेबसाइट का यूआरएल
reeseScriptURLstringहाँreese84 स्क्रिप्ट यूआरएल, इसमें आमतौर पर कई डैश (-) और रैंडम शब्द होते हैं
scriptstringवैकल्पिकreeseScriptURL पर GET अनुरोध करके प्राप्त जावास्क्रिप्ट
userAgentstringवैकल्पिकडिफ़ॉल्ट windows chrome135 है, वर्तमान में windows chrome135 - 147 का समर्थन करता है
languagestringवैकल्पिकआपके हेडर्स में Accept-Language
utmvc
गुणधर्मप्रकारआवश्यकविवरण
typeStringहाँAntiImpervaTaskProxyless
websiteURLStringहाँवेबसाइट का यूआरएल
scriptURLstringहाँइन्कैप्सुला का स्क्रिप्ट यूआरएल, इसमें आमतौर पर _Incapsula_Resource होता है
isUtmvcBoolहाँकृपया इसे सत्य पर सेट करें
cookiesArrayहाँप्रत्येक कुकी जिसका नाम incap_ses_ से शुरू होता है। कुकीज़ का उपयोग करना जानें
userAgentstringवैकल्पिकडिफ़ॉल्ट windows chrome135 है, वर्तमान में windows chrome135 - 147 का समर्थन करता है

अनुरोध और प्रतिक्रिया का उदाहरण

// Example request
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"
    }
}


// Example Response
{
    "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"
    }
}

परिणाम प्राप्त करना

taskId प्राप्त करने के बाद, समाधान पुनः प्राप्त करने के लिए आपको taskId सबमिट करना होगा। प्रतिक्रिया संरचना getTaskResult में समझाई गई है।

सिस्टम लोड के आधार पर, आपको 3s से 10s के अंतराल में परिणाम प्राप्त होंगे।

नमूना कोड

# pip install curl_cffi
import re
from curl_cffi import requests
from urllib.parse import urlparse
 
api_key = "API_KEY"                         # TODO: your api key of capsolver
proxy = "127.0.0.1:1080"                      # TODO: your proxy
website_url = "https://www.targetWebsite.com/"  # TODO: your target website URL
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("view website failed:", res.status_code, res.text)
        return
    reese_url = parse_reese_url_from_html(res.text)
    if not reese_url:
        if not cookie:
            print("reeseScriptUrl not found from website")
        else:
            print("succeed!")
        return
    print("get reeseScriptUrl from 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('get reese84 script error:', 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 failed:", resp.status_code, resp.text)
        return
    data = resp.json()
    token = data.get('token')
    if not token:
        print("post reese84-payload failed:", resp.status_code, resp.text)
        return
    return token
 
 
def parse_reese_url_from_html(html):
    # TODO: Set the rules for your target site
    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("Failed to create task:", res.text)
        return
    print(f"Got taskId: {task_id} / Getting result...")
    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("Solve failed! response:", 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()