Bumalik sa blog

Tatlong Pinagmumulan ng Selenium Automation Traces at ang Hangganan ng Pag-configure

Maaaring mag-iwan ang mga browser na inilulunsad ng Selenium ng pagkakaiba sa debugging ports, mga property na nababasa ng page, at paraan ng pag-start. May mga bahaging makatwirang i-configure, ngunit ang pagtatangkang itago ang automation mismo ay marupok, hindi kailangan, at madalas madaling pumalya.

Kapag gumagamit ng Selenium para sa automation, posible pa ring walang makuhang resulta kahit tama ang logic ng script. Karaniwang unang naiisip ng marami na baguhin ang isa o dalawang parameter, pero ang tunay na nagpapahalata sa environment ay kadalasang hindi isang switch lang. Mas madalas itong kombinasyon ng mga pagkakaiba sa ilang magkakahiwalay na layer. Kapag pinaghiwa-hiwalay ang mga layer na ito, mas madaling makita kung alin ang makatuwirang ayusin at alin ang malamang na walang pakinabang.

Debugging ports at runtime artifacts

Ang paraan ng pagkontrol ng Selenium sa browser ay nag-iiwan ng dalawang uri ng trace. Una, maaaring magbukas ang browser ng debugging port sa pag-start na puwedeng gamitin ng external software para kontrolin ang page. Ikalawa, maaaring may dagdag na artifacts sa runtime environment, gaya ng global variables na may cdc_ prefix na ini-inject ng driver, dagdag na driver objects sa window, at mga nabagong bahagi ng ilang object prototypes.

Hindi galing sa webpage ang mga artifact na ito; galing sila sa driver mismo. Kapag standard ang paraan ng pag-start, naroon sila kahit gaano pa kaayos ang pagkakasulat ng script.

Mga property na nababasa ng page

May isa pang uri ng trace na wala sa driver mismo kundi nasa JavaScript environment na nababasa ng page. Ang pinakakaraniwang halimbawa ay navigator.webdriver.

May tatlong posibleng value ang property na ito. Ang true ay nangangahulugang kontrolado ng automation tool ang browser, ang false ay nangangahulugang hindi ito kontrolado, at ang undefined ay nangangahulugang hindi available ang kaugnay na impormasyon, karaniwan dahil hindi inilalantad ng browser ang property o dahil naproseso na ito. Sa normal na paggamit ng tao, karaniwang false o undefined ito, samantalang true ito sa default na pag-start ng Selenium.

May mas malawak pang hanay ng parameter sa paligid nito: User-Agent, operating system at browser version, screen resolution, time zone, wika, Canvas, WebGL, AudioContext, listahan ng fonts, GPU model, at bilang ng CPU cores. Kapag pinagsama-sama, ito ang karaniwang tinatawag na browser fingerprint. Likas na magkakaiba ang fingerprints ng tunay na users dahil iba-iba ang system, software, at gawi nila. Sa default na automation configuration, kabaligtaran ang maaaring mangyari: nagiging sobrang magkakatulad ang mga kombinasyon at mas madaling maisama sa mga kilalang pattern.

Mga pagkakaibang dulot ng startup mode at rendering timing

Ang ikatlong uri ay hindi nakatali sa iisang property. Nagmumula ito sa kabuuang paraan ng pag-start at pag-render ng browser.

Ang pag-start na may automation flags, paggamit ng headless mode, hindi pagtutugma ng window size at screen parameters, hindi lohikal na kombinasyon ng font rendering at graphics driver, o sobrang pantay na timing mula page load hanggang maging interactive ay hindi sapat na ebidensiya kapag tiningnan nang paisa-isa. Pero kapag pinagsama-sama, maaari itong bumuo ng environment na hindi gaanong mukhang ginagamit ng tunay na tao.

Isang tipikal na halimbawa ang Headless. Mas malapit na sa normal na browser ang headless mode ng mga bagong bersyon ng Chrome kumpara noong ilang taon na ang nakalipas, pero mas madali pa rin itong maglantad ng automation characteristics kaysa regular mode, lalo na sa mga site na may mahigpit na risk controls.

Alin ang makatwirang i-configure

Hindi eksklusibo sa automation ang time zone, wika, screen resolution, at listahan ng fonts. Likas ding magkakaiba ang mga totoong device. Ang mahalaga sa ganitong mga parameter ay consistency: dapat tumugma ang time zone sa rehiyon ng network exit, ang wika sa karaniwang rehiyon, at ang resolution sa hardware profile.

Sa madaling salita, hindi layunin ng ganitong configuration na gawing kakaiba ang environment, kundi gawing lohikal ang kabuuan nito. Kung lumalabas na mula Germany ang isang device pero U.S. West Coast ang time zone ng browser, English lang ang system language, at tipikal ng virtual display ang screen resolution, sapat nang kapansin-pansin ang kombinasyong iyon.

Ito rin ang dahilan kung bakit mas mabuting ilagay ang environment settings sa persistent na lalagyan. Kung babaguhin ang time zone ngayon pero makakalimutan ang wika bukas, mas masama ang inconsistency kaysa hindi galawin ang alinman.

Alin ang nagtatangkang itago ang automation mismo, at bakit hindi ito sulit

May isa pang klase ng technique na direktang nakatuon sa traces: alisin ang navigator.webdriver, burahin ang variables na ini-inject ng driver, itago ang driver objects, o pigilang mabasa ng detector ang automation status.

Ang problema, ibabaw lang ang binabago ng mga paraang ito. Matagal nang hindi iisang property lang ang tinitingnan ng detection; ang pagbabasa ng attributes ay pinakapayak na layer lamang. Isang driver update, pagbabago sa execution order ng detection script, o detector na lumalampas sa JavaScript at direktang sumusuri sa low-level rendering results at kombinasyon ng device characteristics ay puwedeng magpawalang-saysay sa mga dating pagbabago. Hindi maliit ang maintenance cost habang patuloy namang bumababa ang pakinabang.

Mas praktikal pang problema na madalas tumama ang ganitong mga hakbang sa mismong bahaging ipinagbabawal ng terms of service ng platform bilang pag-bypass sa technical protection measures. Hindi nagbabago ang likas na katangian ng aksiyon kahit malinis ang script at ilang property lang ang binago.

Hindi kayang ayusin ng script ang network layer

Kahit maayos ang browser environment, maaari ka pa ring makilala sa network layer. Maaaring tingnan kung kabilang ang IP sa data center, cloud server, o proxy network; ang historical reputation at ASN ng IP range; ang geolocation; ang dami ng requests mula sa iisang IP; at kung ginagamit ang IP para mag-access ng maraming account o page sa maikling panahon. Maaari ring iugnay ang Cookies, Sessions, at login state na kasama sa requests.

Hindi malulutas ang mga ito sa loob ng script. Kailangang hawakan ang mga ito sa environment layer: hiwalay na network exit para sa bawat task, pagkakatugma ng exit region at environment region, at kontroladong request pacing. Sa multi-task isolation, karaniwang dito gumagana ang capabilities tulad ng PurpleMark, na nagbibigay sa bawat task ng hiwalay na browser environment at network exit habang pinananatiling pare-pareho ang geographic parameters.

Praktikal na pagkakasunod-sunod ng pag-troubleshoot kapag na-block

Selenium 自动化痕迹来自运行时与调试、页面属性、启动方式与渲染时序三层,并应按网络、环境、行为、驱动的顺序排查

Makatuwirang pagkakasunod-sunod ang sumusunod: una, tingnan ang network layer at suriin ang IP type, stability, at geographic consistency; ikalawa, tingnan kung magkakatugma ang time zone, wika, resolution, at fonts sa loob ng environment; ikatlo, obserbahan ang behavior timing, gaya ng fixed waits o input na natatapos agad; at saka pa lamang suriin ang driver-level automation properties.

Simple ang dahilan: hindi na driver-level artifacts ang pangunahing pokus ng detection. Kapag iyon agad ang inuuna sa troubleshooting, kadalasan ay nasasayang lang ang oras.

Mga hangganan

Maaaring mabawasan ng technical measures ang posibilidad na makilala, pero may mga linyang hindi dapat lampasan: sundin ang robots rules at terms of service ng target site, huwag mangolekta ng personal na impormasyon, huwag i-bypass ang technical protection measures, kontrolin ang request frequency, at huwag gambalain ang normal na operasyon ng serbisyo.