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