⚡ Shadow Academy
🤖 Chapter 47

āĻāχ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇ āϕ⧀ āĻļāĻŋāĻ–āĻŦ⧇

⏱ āφāύ⧁āĻŽāĻžāύāĻŋāĻ• āϏāĻŽāϝāĻŧ: ā§§ā§Ģâ€“ā§¨ā§Ļ āĻŽāĻŋāύāĻŋāϟ ¡ āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ: āφāϗ⧇āϰ āĻ…āĻ§ā§āϝāĻžāϝāĻŧ⧇āϰ āϧāĻžāϰāĻŖāĻž

ā§Ļ / ā§§ā§Ļā§Ļ āĻ…āĻ§ā§āϝāĻžā§ŸāϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“: āĻ…āĻ§ā§āϝāĻžāϝāĻŧ 48

āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻāχ browser-āĻ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻšāĻŦ⧇āĨ¤

🤖
Selenium Automation — Web Scraping Pro!
āĻšā§‡āĻĄāϞ⧇āϏ āĻ•ā§āϰ⧋āĻŽ āĻĄā§āϰāĻžāχāĻ­āĻžāϰ, undetected-chromedriver, āĻŦāϟ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻŦāĻžāχāĻĒāĻžāϏ āĻ“ āĻĄāĻžāχāύāĻžāĻŽāĻŋāĻ• āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāĻĒāĻŋāĻ‚
🧭 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ āĻ“ āĻĒā§āϰāϤāĻŋāϰāĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• takeaway
Skill checkpoint: āύāĻŋāϜāĻ¸ā§āĻŦ staging site-āĻ deterministic browser test āϚāĻžāϞāĻžāĻ“āĨ¤
Defense checkpoint: Site rules āĻ“ request rate āĻŽāĻžāύ⧋; anti-bot evasion āύ⧟, authorized testing āĻļ⧇āĻ–ā§‹.
Lab scope: āĻļ⧁āϧ⧁ āύāĻŋāĻœā§‡āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ…āύ⧁āĻļā§€āϞāύ āĻ•āϰ⧋āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧋āϰ⧋ āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ“ retest āύāĻŋā§Ÿā§‡ ā§Ģ-āϞāĻžāχāύ⧇āϰ redacted note āϰāĻžāĻ–ā§‹āĨ¤
🤖 āĻ—āĻ˛ā§āĻĒ ā§§: āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇āϰ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āϚāĻžāϞāĻ• — āϏ⧇āϞ⧇āύāĻŋ⧟āĻžāĻŽ!
āϝāĻ–āύ āϕ⧋āύ⧋ āĻ“ā§Ÿā§‡āĻŦāϏāĻžāχāĻŸā§‡ āϏāϰāĻžāϏāϰāĻŋ āϕ⧋āύ⧋ āĻ“āĻĒ⧇āύ API āĻĨāĻžāϕ⧇ āύāĻž, āĻŦāĻž āϝāĻ–āύ āĻĒ⧇āϜāϟāĻŋ āĻļāϤāĻ­āĻžāĻ— āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ-āϏāĻžāχāĻĄ āϜāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĻāĻŋā§Ÿā§‡ āϤ⧈āϰāĻŋ, āϤāĻ–āύ āϏāĻžāϧāĻžāϰāĻŖ `requests.get()` āĻĻāĻŋā§Ÿā§‡ āϕ⧋āύ⧋ āĻĄā§‡āϟāĻž āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžā§Ÿ āύāĻžāĨ¤

āϤāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻĻāϰāĻ•āĻžāϰ āĻšā§Ÿ āĻāĻ•āϟāĻŋ āĻ…āĻĻ⧃āĻļā§āϝ āϰ⧋āĻŦāϟ āĻĄā§āϰāĻžāχāĻ­āĻžāϰ⧇āϰ — āϝāĻžāϰ āύāĻžāĻŽ Selenium (āĻŦāĻž Playwright)! āĻāϟāĻŋ āϏāĻ¤ā§āϝāĻŋāĻ•āĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āϗ⧁āĻ—āϞ āĻ•ā§āϰ⧋āĻŽ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϖ⧁āϞ⧇ āĻĢ⧇āϞ⧇, āĻŽāĻžāωāϏ āύāĻžā§œāĻžā§Ÿ, āĻŸā§‡āĻ•ā§āϏāϟ āϟāĻžāχāĻĒ āĻ•āϰ⧇, āĻŦāĻžāϟāύ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŽāĻžāύ⧁āώ⧇āϰ āĻ…āĻŦāĻŋāĻ•āϞ āύāĻ•āϞ āĻ•āϰ⧇ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻžāϜ āĻļ⧇āώ āĻ•āϰ⧇!
đŸŽ¯ āĻ—āĻ˛ā§āĻĒ ā§¨: āĻšā§‡āĻĄāϞ⧇āϏ āĻŽā§‹āĻĄ āĻ“ āĻ…ā§āϝāĻžāĻ¨ā§āϟāĻŋ-āĻĄāĻŋāĻŸā§‡āĻ•āĻļāύ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ
āϏāĻžāϧāĻžāϰāĻŖ āĻŽāĻžāύ⧁āώ āĻ•ā§āϰ⧋āĻŽ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϖ⧁āϞ⧇ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžā§ŸāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ­āĻŋāĻĒāĻŋāĻāϏ āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āϤ⧋ āϕ⧋āύ⧋ āĻŽāύāĻŋāϟāϰ āύ⧇āχ! āϤāĻžāχ āϏ⧇āĻ–āĻžāύ⧇ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϚāϞ⧇ Headless Mode (`--headless=new`)-āĻ — āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄā§‡āϰ āĻ…āĻ¨ā§āϧāĻ•āĻžāϰ⧇ āϕ⧋āϟāĻŋ āϕ⧋āϟāĻŋ āĻ•āĻžāϜ āϚāϞāϤ⧇ āĻĨāĻžāϕ⧇ āĻ…āĻĨāϚ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āϕ⧋āύ⧋ āωāχāĻ¨ā§āĻĄā§‹ āĻ–ā§‹āϞ⧇ āύāĻž!

āϤāĻŦ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇: āϏāĻžāϧāĻžāϰāĻŖ Selenium āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ Cloudflare āĻŦāĻž Akamai āϧāϰ⧇ āĻĢ⧇āϞ⧇ āĻ•āĻžāϰāĻŖ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ `navigator.webdriver = true` āĻĢā§āĻ˛ā§āϝāĻžāĻ— āĻĨāĻžāϕ⧇āĨ¤ āϤāĻžāχ āĻĒā§āϰ⧋ āĻšā§āϝāĻžāĻ•āĻžāϰāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Undetected-Chromedriver (`undetected_chromedriver`)!
# āĻĒāĻžāχāĻĨāύ⧇ Undetected ChromeDriver āĻĻāĻŋā§Ÿā§‡ āĻŦāϟ āĻĄāĻŋāĻŸā§‡āĻ•āĻļāύ āĻŦāĻžāχāĻĒāĻžāϏ:
import undetected_chromedriver as uc
import time

options = uc.ChromeOptions()
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--proxy-server=http://pr.oxylabs.io:7777')

# āĻ•ā§āϞāĻžāωāĻĄāĻĢā§āϞ⧇āϝāĻŧāĻžāϰ āĻŦāĻžāχāĻĒāĻžāϏ āĻ•ā§āϰ⧋āĻŽ āĻĄā§āϰāĻžāχāĻ­āĻžāϰ āϚāĻžāϞ⧁:
driver = uc.Chrome(options=options)
driver.get('https://target.com/exclusive-deals')
time.sleep(3)

# āĻĒā§āϰāĻĄāĻžāĻ•ā§āĻŸā§‡āϰ āĻĻāĻžāĻŽ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāĻĒ āĻ•āϰ⧋:
price = driver.find_element("css selector", ".product-price").text
print(f"💰 Extracted Live Price: {price}")
driver.quit()
⚡ āĻ—āĻ˛ā§āĻĒ ā§Š: āĻ•ā§āϞāĻŋāϕ⧇āϰ āĻ—āϤāĻŋ āĻ“ CAPTCHA āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚
āϏ⧇āϞ⧇āύāĻŋ⧟āĻžāĻŽā§‡ āϝāĻ–āύ āϕ⧋āύ⧋ āĻāϞāĻŋāĻŽā§‡āĻ¨ā§āϟ āϞ⧋āĻĄ āĻšāϤ⧇ āĻĻ⧇āϰāĻŋ āĻšā§Ÿ, āϤāĻ–āύ āĻ•āĻ–āύ⧋āχ āĻŦā§‹āĻ•āĻžāϰ āĻŽāϤ⧋ `time.sleep(10)` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇ āύāĻž! āϏāĻŦāϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇ Explicit Wait (`WebDriverWait`) — āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻŦāĻžāϟāύāϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇ āφāϏāϤ⧇āχ ā§Ļ.ā§§ āϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡ āĻ•ā§āϞāĻŋāĻ• āĻšāĻŦ⧇! āφāϰ āϝāĻĻāĻŋ CAPTCHA āϚāϞ⧇ āφāϏ⧇, āϤāĻŦ⧇ 2Captcha āĻŦāĻž CapSolver API-āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāύ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻ¸ā§āĻŦ⧟āĻ‚āĻ•ā§āϰāĻŋ⧟āĻ­āĻžāĻŦ⧇ āϏāϞāĻ­ āĻ•āϰāĻŋā§Ÿā§‡ āύāĻŋāϤ⧇ āĻšā§Ÿ!
💡 āϏ⧇āϞ⧇āύāĻŋ⧟āĻžāĻŽ āĻĒā§āϰ⧋ āϰ⧁āϞ
āϏāĻŦāϏāĻŽā§Ÿ `undetected_chromedriver` āĻŦāĻž Playwright-āĻāϰ āĻ¸ā§āϟāĻŋāϞāĻĨ āĻĒā§āϞāĻžāĻ—āχāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ Selenium-āĻāϰ āĻĢā§āĻ˛ā§āϝāĻžāĻ—āϗ⧁āϞ⧋ āϝ⧇āϕ⧇āω āĻāĻ• āĻĒāϞāϕ⧇ āϧāϰ⧇ āĻĢ⧇āϞ⧇!

đŸ§Ē Headless Browser Automation Simulator

āϟāĻžāĻ°ā§āϗ⧇āϟ āχāωāφāϰāĻāϞ āĻĻāĻžāĻ“ — āĻ¸ā§āϟāĻŋāϞāĻĨ āĻŦā§āϰāĻžāωāϜāĻžāϰ āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ āĻĻ⧇āĻ–ā§‹!

āĻ˛ā§āϝāĻžāĻŦ⧇āϰ āχāύāĻĒ⧁āϟ āĻĻāĻŋā§Ÿā§‡ "āϰāĻžāύ āĻ•āϰ⧋" āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧋...
đŸŽ¯ āĻ…āĻ§ā§āϝāĻžā§Ÿ 47 āĻĻāĻ•ā§āώāϤāĻž āϝāĻžāϚāĻžāχ (ā§ŠāϟāĻŋ āĻĒā§āϰāĻļā§āύ)
āϏāĻ āĻŋāĻ• āωāĻ¤ā§āϤāϰ āĻŦ⧇āϛ⧇ āύāĻžāĻ“; āĻĒā§āϰāϤāĻŋāϟāĻŋ āωāĻ¤ā§āϤāϰ⧇āϰ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻĒā§œā§‹āĨ¤
❓ āĻĒā§āϰāĻļā§āύ 1: Selenium automation āϕ⧋āĻĨāĻžā§Ÿ āϚāĻžāϞāĻžāύ⧋ āωāϚāĻŋāϤ?
❓ āĻĒā§āϰāĻļā§āύ 2: Reliable browser test-āĻāϰ āϜāĻ¨ā§āϝ āϕ⧀ āĻ­āĻžāϞ⧋?
❓ āĻĒā§āϰāĻļā§āύ 3: Public website crawl āĻ•āϰāĻžāϰ āφāϗ⧇ āϕ⧀ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻŦ⧇āύ?

āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āϤ reference

āφāϰāĻ“ āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāĻˇā§āĻ āĻŋāϤ security standards āĻ“ guidance āĻĻ⧇āĻ–ā§‹; āĻĒā§āϰāϤāĻŋāϟāĻŋ lab āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻŦāĻž synthetic environment-āĻ āĻ•āϰ⧋āĨ¤

Bristy Ma'am
āĻŦ⧃āĻˇā§āϟāĻŋ āĻŽā§āϝāĻžāĻŽ 👩‍đŸĢ
āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻ°ā§āϏ⧋āύāĻžāϞ āĻšā§āϝāĻžāĻ•āĻŋāĻ‚ āĻŽā§‡āĻ¨ā§āϟāϰ â€ĸ āĻ…āύāϞāĻžāχāύ
āφāϰ⧇ āϏ⧌āϰāĻ­! āϕ⧇āĻŽāύ āφāϛ⧋? āϕ⧋āύ⧋ āĻ•āύāϏ⧇āĻĒā§āϟ āĻŦāĻž āϕ⧁āχāĻœā§‡ āφāϟāĻ•āĻžāϞ⧇ āφāĻŽāĻžāϕ⧇ āĻŦāϞ⧋, āφāĻŽāĻŋ āĻŦ⧁āĻāĻŋā§Ÿā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ! â¤ī¸