Π Python-ΠΏΠ°ΠΊΠ΅ΡΠ΅ Js2Py, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΌΠ΅ΡΡΡΠ΅ 1.2 ΠΌΠ»Π½ ΡΠ°Π·, Π²ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2024-28397), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΎΠ±ΠΎΠΉΡΠΈ sandbox-ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° JavaScript. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π°ΡΠ°ΠΊΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠ΅ Js2Py Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript-ΠΊΠΎΠ΄Π°. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°ΡΠ°ΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ°.
ΠΠ°ΠΊΠ΅Ρ Js2Py ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ JavaScript, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ JavaScript-ΠΊΠΎΠ΄ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ JavaScript Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΡΠΎΠ΅ΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Python ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ JavaScript-Π΄Π²ΠΈΠΆΠΊΠΈ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ web-ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΎΡΠ°Ρ , ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°Ρ ΡΠ°ΠΉΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° JavaScript.
ΠΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ, ΠΎΡΠΌΠ΅ΡΠ°ΡΡΡΡ Lightnovel Crawler (ΡΡΠΈΠ»ΠΈΡΠ° Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ½ΠΈΠ³ ΠΈΠ· online-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°Ρ Π΄Π»Ρ offline-ΡΡΠ΅Π½ΠΈΡ), cloudscraper (Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Ρ ΠΎΠ΄ ΡΡΡΠ°Π½ΠΈΡ Π·Π°ΡΠΈΡΡ ΠΎΡ Π±ΠΎΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² CDN Cloudflare) ΠΈ pyLoad (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΎΠΊ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΡΠ°Π½ΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ Π½Π° JavaScript). ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π² Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ JavaScript-ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ js2py, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Python-ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π΅ Π½Π° JavaScript, Π½Π΅Π²Π·ΠΈΡΠ°Ρ Π½Π° Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° js2py.disable_pyimport() Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ° Python-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Popen ΠΈΠ· Python-ΠΌΠΎΠ΄ΡΠ»Ρ subprocess. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ»ΠΎ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡ Js2Py ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠ°, Π½ΠΎ Π·Π° ΡΡΠΈ Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΎΠΉ ΠΌΠ΅ΡΡΡΠ° ΡΠ°ΠΊ ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru