đ§ āĻĻāĻā§āώāϤāĻž āϝāĻžāĻāĻžāĻ āĻ āĻĒā§āϰāϤāĻŋāϰāĻā§āώāĻžāĻŽā§āϞāĻ 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`)!
⥠āĻāϞā§āĻĒ ā§Š: āĻā§āϞāĻŋāĻā§āϰ āĻāϤāĻŋ āĻ CAPTCHA āĻšā§āϝāĻžāύā§āĻĄāϞāĻŋāĻ
āϏā§āϞā§āύāĻŋā§āĻžāĻŽā§ āϝāĻāύ āĻā§āύ⧠āĻāϞāĻŋāĻŽā§āύā§āĻ āϞā§āĻĄ āĻšāϤ⧠āĻĻā§āϰāĻŋ āĻšā§, āϤāĻāύ āĻāĻāύā§āĻ āĻŦā§āĻāĻžāϰ āĻŽāϤ⧠`time.sleep(10)` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ āύāĻž! āϏāĻŦāϏāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§ Explicit Wait (`WebDriverWait`) â āĻ
āϰā§āĻĨāĻžā§ āĻŦāĻžāĻāύāĻāĻŋ āϏā§āĻā§āϰāĻŋāύ⧠āĻāϏāϤā§āĻ ā§Ļ.ā§§ āϏā§āĻā§āύā§āĻĄā§ āĻā§āϞāĻŋāĻ āĻšāĻŦā§! āĻāϰ āϝāĻĻāĻŋ CAPTCHA āĻāϞ⧠āĻāϏā§, āϤāĻŦā§ 2Captcha āĻŦāĻž CapSolver API-āĻāϰ āϏāĻžāĻĨā§ āĻāĻžāύā§āĻā§āĻ āĻāϰ⧠āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§ āϏāϞāĻ āĻāϰāĻŋā§ā§ āύāĻŋāϤ⧠āĻšā§!
đĄ āϏā§āϞā§āύāĻŋā§āĻžāĻŽ āĻĒā§āϰ⧠āϰā§āϞ
āϏāĻŦāϏāĻŽā§ `undetected_chromedriver` āĻŦāĻž Playwright-āĻāϰ āϏā§āĻāĻŋāϞāĻĨ āĻĒā§āϞāĻžāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ Selenium-āĻāϰ āĻĢā§āϞā§āϝāĻžāĻāĻā§āϞ⧠āϝā§āĻā§āĻ āĻāĻ āĻĒāϞāĻā§ āϧāϰ⧠āĻĢā§āϞā§!