Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
nodriver — Successor of Undetected-Chromedriver. वेब ऑटोमेशन, वेबस्क्रैपिंग, बॉट्स और किसी भी अन्य रचनात्मक विचारों के लिए एक बहुत तेज़ फ्रेमवर्क प्रदान करता है जो सामान्यतः Captcha / CloudFlare / Imperva / hCaptcha जैसी कष्टप्रद एंटी-बॉट प्रणालियों द्वारा बाधित होते हैं। | Kitploit
उपकरण/GitHubGitHub/ultrafunkamsterdam/nodriver
फ़िशिंग उपकरणवेब प्रॉक्सी और अवरोधनआईडीएस/आईपीएस से बचनापहचान छुपाने के उपकरणस्क्रिप्टिंग और स्वचालनWAF बाईपासवेब सुरक्षाक्रॉलरएंटी-बॉट

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
फिंगरप्रिंट स्पूफिंग
कैप्चा बायपास
GitHubultrafunkamsterdam/nodriver

nodriver

Successor of Undetected-Chromedriver. वेब ऑटोमेशन, वेबस्क्रैपिंग, बॉट्स और किसी भी अन्य रचनात्मक विचारों के लिए एक बहुत तेज़ फ्रेमवर्क प्रदान करता है जो सामान्यतः Captcha / CloudFlare / Imperva / hCaptcha जैसी कष्टप्रद एंटी-बॉट प्रणालियों द्वारा बाधित होते हैं।

रिपॉजिटरी देखें
4.6k430154 महीने पहलेKitploit द्वारा समीक्षित

NODRIVER

nodriver python के लिए एक अगली पीढ़ी की async वेब स्क्रैपिंग और ब्राउज़र ऑटोमेशन लाइब्रेरी प्रदान करता है जिसमें एक सरल इंटरफ़ेस है जो बिल्कुल समझ में आता है ™

  • यह Undetected-Chromedriver python पैकेज का आधिकारिक उत्तराधिकारी है।
  • अब कोई webdriver नहीं, अब कोई selenium नहीं

दस्तावेज़ के लिए यहाँ क्लिक करें

प्रत्यक्ष संचार वेब एप्लिकेशन फ़ायरवॉल (WAF) के खिलाफ और भी बेहतर प्रतिरोध प्रदान करता है, जबकि प्रदर्शन को भारी बढ़ावा मिलता है। यह मॉड्यूल, undetected-chromedriver के विपरीत, पूरी तरह से async है।

यह पैकेज अन्य ज्ञात पैकेजों से अलग क्या बनाता है, वह अधिकांश एंटी-बॉट समाधानों के लिए पहचाने न जाने के लिए अनुकूलन है।

एक और फोकस बिंदु उपयोगिता और त्वरित प्रोटोटाइपिंग है, इसलिए उम्मीद करें कि बहुत कुछ -as is- काम करेगा, जिसमें अधिकांश विधि पैरामीटर में best practice डिफ़ॉल्ट होंगे। 1 या 2 पंक्तियों का उपयोग करके, यह चालू और चलने के लिए तैयार है, जो डिफ़ॉल्ट रूप से best practice कॉन्फ़िगरेशन प्रदान करता है। यह बाद में बनाई गई फ़ाइलों (प्रोफ़ाइल) को साफ़ कर देता है।

इसके साथ काम करने के लिए जाना जाता है

  • chromium
  • chrome
  • edge
  • brave

जबकि उपयोगिता और सुविधा महत्वपूर्ण है। हालांकि, CDP डोमेन, विधियों और उपलब्ध ईवेंट की पूरी श्रृंखला का उपयोग करके सब कुछ पूरी तरह से अनुकूलन योग्य बनाना भी आसान है।

कुछ विशेषताएं

  • कोई chromedriver बाइनरी या Selenium निर्भरता नहीं

  • कोड की 1 पंक्ति में चालू और चलने के लिए तैयार*

  • प्रत्येक रन पर ताज़ा प्रोफ़ाइल का उपयोग करता है, बाहर निकलने पर साफ़ करता है

  • बार-बार लॉगिन चरणों को दोहराने से बचने के लिए कुकीज़ को फ़ाइल में सहेजें और लोड करें

  • tab.find("sometext")

    tab.find_all("sometext")

    tab.select("a[class*=something]")

    tab.select_all("a[href] > div > img")

    स्मार्ट और कुशल एलिमेंट लुकअप, सेलेक्टर या टेक्स्ट द्वारा, जिसमें iframe सामग्री भी शामिल है। इसका उपयोग किसी एलिमेंट के प्रकट होने के लिए प्रतीक्षा स्थिति के रूप में भी किया जा सकता है, क्योंकि यह मिलने तक की अवधि के लिए पुनः प्रयास करेगा। इसलिए await tab.select('body') का उपयोग यह संकेतक हो सकता है कि पेज लोड हुआ है या नहीं। find विधि टेक्स्ट द्वारा खोज करती है, लेकिन भोलेपन से पहले मिलने वाले एलिमेंट को वापस नहीं करेगी, बल्कि निकटतम मिलान वाली टेक्स्ट लंबाई (सबसे छोटी जीतती है) द्वारा उम्मीदवारों का मिलान करेगी, यह लुकअप को tab.find('accept all') जैसा बनाता है जो हेडर में स्क्रिप्ट के बजाय वास्तविक कुकी बटन लौटाता है

  • चल रहे क्रोम डीबग सत्र से कनेक्ट हो सकता है

  • एलिमेंट के लिए वर्णनात्मक __repr__ जो एलिमेंट को html के रूप में प्रस्तुत करता है

  • चल रहे undetected_chromedriver.Chrome इंस्टेंस को nodriver.Browser इंस्टेंस में बदलने और वहां से जारी रखने के लिए उपयोगिता फ़ंक्शन

  • अधिकांश उपयोग किए जाने वाले और महत्वपूर्ण कार्यों के लिए सहायक और उपयोगिता विधियों से भरा हुआ

नया क्या है

0.50.1 फ्लैट मोड कनेक्शन पर स्विच करें।

प्रोटोकॉल में फ्लैट कनेक्शन का उपयोग करने के लिए भागों को फिर से लिखा गया है। क्यों? - iframes अधिकांश कार्यों में शामिल हैं। - tab को एक नई विधि मिली: await tab.get_frames() जो निरीक्षण योग्य Iframes लौटाएगा। - find() में iframes शामिल होंगे, इसलिए आप "verify you are human" खोज सकते हैं और js चुनौतियों में सत्यापन चेकबॉक्स पर क्लिक कर सकते हैं।

चूंकि इसके लिए काफी पुनर्लेखन की आवश्यकता थी, कृपया पूरी तरह से परीक्षण करें, खासकर यदि आप बड़े प्रोजेक्ट चलाते हैं।

tab.xpath(selector, timeout=2.5)

xpath सेलेक्टर का उपयोग करके नोड्स खोजें! एपीआई दस्तावेज़ में tab xpath देखें

tab.cf_verify()

चेकबॉक्स ढूंढता है और उसे सफलतापूर्वक क्लिक करता है यह केवल तब काम करता है जब एक्सपर्ट मोड में न हो। वर्तमान में केवल अंग्रेजी में बनाया गया है opencv-python पैकेज स्थापित होना आवश्यक है

tab.bypass_insecure_connection_warning()

असुरक्षित पेज चेतावनी के लिए सुविधा विधि, उदाहरण के लिए जब कोई प्रमाणपत्र अमान्य हो।

tab.open_external_debugger()

आपको अपने कनेक्शन को तोड़े बिना टैब का निरीक्षण करने देता है

tab.get_local_storage()

localstorage सामग्री प्राप्त करें

tab.set_local_storage(dict)

localstorage सामग्री सेट करें

tab.add_handler(someEvent, callback)

कॉलबैक एक एकल तर्क (ईवेंट) या 2 तर्क (ईवेंट, tab) स्वीकार कर सकता है।

start(expert=True)

अधिक अनुभवी उपयोगकर्ताओं के लिए कुछ हैकिंग करता है। यह वेब सुरक्षा और ओरिजिन-ट्रायल को अक्षम करता है, साथ ही यह सुनिश्चित करता है कि शैडो-रूट हमेशा खुले रहें। हालांकि, यह आपको अधिक पहचानने योग्य बनाता है!

स्थापना

आपके पास क्रोम (या कोई क्रोमियम-आधारित ब्राउज़र) स्थापित होना चाहिए अधिमानतः डिफ़ॉल्ट स्थान पर उस मशीन पर जहां आप इस पैकेज का उपयोग करते हैं।

जब हेडलेस मशीन पर चल रहे हों, जैसे AWS या कोई अन्य वातावरण जहां कोई डिस्प्ले मौजूद नहीं है, तो स्क्रीन का अनुकरण करने के लिए किसी Xvfb टूल का उपयोग करना सबसे अच्छा है। वैकल्पिक रूप से इस पैकेज का उपयोग हेडलेस मोड में किया जा सकता है।

आप nodriver स्थापित करने के लिए pip का उपयोग कर सकते हैं

root@kitploit:~
pip install nodriver

अपडेट करने के लिए

root@kitploit:~
pip install -U nodriver

उपयोग उदाहरण

इस परियोजना का उद्देश्य (बिल्कुल undetected-chromedriver की तरह, काफी समय पहले) इसे छोटा और सरल रखना है, ताकि आप जल्दी से एक संपादक या इंटरैक्टिव सत्र खोल सकें, कुछ पंक्तियाँ टाइप या पेस्ट कर सकें और चल सकें।

सरल

root@kitploit:~
import nodriver as uc

async def main():

    browser = await uc.start()
    page = await browser.get('https://www.nowsecure.nl')

    ... आगे कोड ...

if __name__ == '__main__':
    # चूंकि asyncio.run कभी काम नहीं किया (मेरे लिए)
    uc.loop().run_until_complete(main())

कस्टम प्रारंभिक विकल्प

मैं यहां async बॉयलरप्लेट छोड़ रहा हूं

root@kitploit:~
from nodriver import *

browser = await start(
    headless=False,
    user_data_dir="/path/to/existing/profile",  # इसे निर्दिष्ट करके, यह समाप्त होने पर स्वचालित रूप से साफ नहीं होगा
    browser_executable_path="/path/to/some/other/browser",
    browser_args=['--some-browser-arg=true', '--some-other-option'],
    lang="en-US"   # यह नेविगेटर में iso-language-code सेट कर सकता है, इसे बदलने की अनुशंसा नहीं की जाती है
)
tab = await browser.get('https://somewebsite.com')

Config ऑब्जेक्ट का उपयोग करके कस्टम विकल्प

मैं यहां async बॉयलरप्लेट छोड़ रहा हूं

root@kitploit:~
from nodriver import *

config = Config()
config.headless = False
config.user_data_dir="/path/to/existing/profile",  # इसे निर्दिष्ट करके, यह समाप्त होने पर स्वचालित रूप से साफ नहीं होगा
config.browser_executable_path="/path/to/some/other/browser",
config.browser_args=['--some-browser-arg=true', '--some-other-option'],
config.lang="en-US"   # यह नेविगेटर में iso-language-code सेट कर सकता है, इसे बदलने की अनुशंसा नहीं की जाती है
)

कुछ प्रभाव

root@kitploit:~
import nodriver

async def main():

    browser = await nodriver.start()
    page = await browser.get('https://www.nowsecure.nl')

    await page.save_screenshot()
    await page.get_content()
    await page.scroll_down(150)
    elems = await page.select_all('*[src]')

    for elem in elems:
        await elem.flash()

    page2 = await browser.get('https://twitter.com', new_tab=True)
    page3 = await browser.get('https://github.com/ultrafunkamsterdam/nodriver', new_window=True)

    for p in (page, page2, page3):
       await p.bring_to_front()
       await p.scroll_down(200)
       await p   # ईवेंट प्रोसेस होने तक प्रतीक्षा करें
       await p.reload()
       if p != page3:
           await p.close()

if __name__ == '__main__':

    # चूंकि asyncio.run कभी काम नहीं किया (मेरे लिए)
    uc.loop().run_until_complete(main())

पूर्ण कोड उदाहरण

Twitter/X खाता निर्माण को स्वचालित करना

एक अधिक ठोस उदाहरण, जो ./example/ फ़ोल्डर में पाया जा सकता है, ट्विटर खाता बनाने के लिए एक स्क्रिप्ट दिखाता है

root@kitploit:~
import random
import string
import logging

logging.basicConfig(level=30)

import nodriver as uc

months = [
    "january",
    "february",
    "march",
    "april",
    "may",
    "june",
    "july",
    "august",
    "september",
    "october",
    "november",
    "december",
]


async def main():
    driver = await uc.start()

    tab = await driver.get("https://twitter.com")

    # टेक्स्ट प्रकट होने की प्रतीक्षा करें, प्रतीक्षा करने के लिए स्थिर सेकंड की संख्या के बजाय
    # यह हमेशा उम्मीद के मुताबिक काम नहीं करता है, गति के कारण।
    print('"create account" बटन ढूंढ रहे हैं')
    create_account = await tab.find("create account", best_match=True)

    print('"create account" => क्लिक करें')
    await create_account.click()

    print("ईमेल इनपुट फ़ील्ड ढूंढ रहे हैं")
    email = await tab.select("input[type=email]")

    # कभी-कभी, ईमेल फ़ील्ड नहीं दिखाई जाती है, क्योंकि इसके बजाय फ़ोन मांगा जाता है
    # जब ऐसा होता है, तो छोटा टेक्स्ट ढूंढें जो "use email instead" कहता है
    if not email:
        use_mail_instead = await tab.find("use email instead")
        # और उस पर क्लिक करें
        await use_mail_instead.click()

        # अब ईमेल फ़ील्ड फिर से ढूंढें
        email = await tab.select("input[type=email]")

    randstr = lambda k: "".join(random.choices(string.ascii_letters, k=k))

    # ईमेल फ़ील्ड में कुंजियाँ भेजें
    print('"email" इनपुट फ़ील्ड भर रहे हैं')
    await email.send_keys("".join([randstr(8), "@", randstr(8), ".com"]))

    # नाम इनपुट फ़ील्ड ढूंढें
    print("नाम इनपुट फ़ील्ड ढूंढ रहे हैं")
    name = await tab.select("input[type=text]")

    # फिर से, यादृच्छिक टेक्स्ट भेजें
    print('"name" इनपुट फ़ील्ड भर रहे हैं')
    await name.send_keys(randstr(8))

    # चूंकि टैब पर 3 सेलेक्ट फ़ील्ड हैं, हम अनपैकिंग का उपयोग कर सकते हैं
    # प्रत्येक फ़ील्ड को असाइन करने के लिए
    print('"month", "day" और "year" फ़ील्ड एक साथ ढूंढ रहे हैं')
    sel_month, sel_day, sel_year = await tab.select_all("select")

    # await sel_month.focus()
    print('"month" इनपुट फ़ील्ड भर रहे हैं')
    await sel_month.send_keys(months[random.randint(0, 11)].title())

    # await sel_day.focus()
    # मैं महीने की लंबाई और लीप वर्षों की परवाह नहीं करना चाहता
    print('"day" इनपुट फ़ील्ड भर रहे हैं')
    await sel_day.send_keys(str(random.randint(0, 28)))

    # await sel_year.focus()
    # मैं आयु प्रतिबंधों की परवाह नहीं करना चाहता
    print('"year" इनपुट फ़ील्ड भर रहे हैं')
    await sel_year.send_keys(str(random.randint(1980, 2005)))

    await tab

    # चलिए कुकी नाग को भी संभालते हैं
    cookie_bar_accept = await tab.find("accept all", best_match=True)
    if cookie_bar_accept:
        await cookie_bar_accept.click()

    await tab.sleep(1)

    next_btn = await tab.find(text="next", best_match=True)
    # for btn in reversed(next_btns):
    await next_btn.mouse_click()

    print("2 सेकंड सो रहे हैं")
    await tab.sleep(2)  # देखने के लिए कि हम वास्तव में किस भाग में हैं

    print('"next" बटन ढूंढ रहे हैं')
    next_btn = await tab.find(text="next", best_match=True)
    print('"next" बटन पर क्लिक कर रहे हैं')
    await next_btn.mouse_click()

    # जारी रखने से पहले बस किसी बटन की प्रतीक्षा करें
    await tab.select("[role=button]")

    print('"sign up" बटन ढूंढ रहे हैं')
    sign_up_btn = await tab.find("Sign up", best_match=True)
    # हमें दूसरे की आवश्यकता है
    print('"sign up" बटन पर क्लिक कर रहे हैं')
    await sign_up_btn.click()

    print('बाकी "कार्यान्वयन" दायरे से बाहर है')
    # आगे कार्यान्वयन दायरे से बाहर
    await tab.sleep(10)
    driver.stop()

    # मेल द्वारा सत्यापन कोड


if __name__ == "__main__":
    # चूंकि asyncio.run कभी काम नहीं किया (मेरे लिए)
    # मैं उपयोग करता हूं
    uc.loop().run_until_complete(main())

./example/ फ़ोल्डर में और उदाहरण

टूल डाउनलोड करें