ಕಂಪ್ಯೂಟರ್ ಪ್ರಪಂಚದ ಬಗ್ಗೆ ಕಲಿಯುವ ವಿದ್ಯಾರ್ಥಿಯ ಮೆದುಳು ಏನು ಸಾಮರ್ಥ್ಯ ಹೊಂದಿದೆ?

ದಿನದ ಸಮಯ.

ಬ್ಯಾಷ್‌ನಲ್ಲಿ ಮತ್ತೊಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಬರೆಯುವುದನ್ನು ಮುಗಿಸಿದ ನಂತರ, ಎಲ್ಲವೂ ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನವಾಗಿರಬೇಕು ಎಂದು ನಾನು ಅರಿತುಕೊಂಡೆ, ಆದರೆ ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡಿದೆ. ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ನಾನು ಯಾವ ಅಶ್ಲೀಲತೆ ಮತ್ತು ಊರುಗೋಲುಗಳನ್ನು ಬರೆದಿದ್ದೇನೆ ಎಂದು ನಾನು ನಿಮಗೆ ತೋರಿಸಲು ಬಯಸುತ್ತೇನೆ, ಆದರೆ ಇನ್ನೂ ಜ್ಞಾನದ ವ್ಯಾಗನ್ ಹೊಂದಿಲ್ಲ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನ ವ್ಯಂಗ್ಯಚಿತ್ರ.

ಉದ್ದೇಶ


ಇದಕ್ಕೆ ಏನಾದರೂ ಅಗತ್ಯವಿತ್ತು:

  • ಚೌಕಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಪದಕ್ಕೆ ಹಲವು ಪ್ರಾಸಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗಿದೆ
  • ಎರಡು ಪದಗಳ ಅನೇಕ ಪ್ರಾಸಗಳನ್ನು ದಾಟಿದೆ

ಯಾವುದಕ್ಕಾಗಿ? ಸರಿ, ಅದು ಇಲ್ಲಿದೆ - ಮತ್ತು ಅದು ಇಲ್ಲಿದೆ.
ಯಾರಿಗೆ ಗೊತ್ತಿಲ್ಲ, ಒಂದು ಚದರ ಪ್ರಾಸ (ಸಾಮಾನ್ಯ ಭಾಷೆಯಲ್ಲಿ - ಒಂದು ಚೌಕ) ಎರಡು ಪದಗಳು ಕಾಗುಣಿತದಲ್ಲಿನ ಕೊನೆಯ ಎರಡು ಅಕ್ಷರಗಳು ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ, ಅದು (ಸಾಮಾನ್ಯವಾಗಿ, ಇದು ಒಂದೇ ವಿಷಯ) ಅವುಗಳನ್ನು ಪ್ರಾಸವನ್ನಾಗಿ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಗುಲಾಬಿಗಳು ಫ್ರಾಸ್ಟಿ; ಟೈರ್ - ಕಾರು. ಆಧುನಿಕ ವರ್ಸಿಫಿಕೇಶನ್‌ನಲ್ಲಿ ಚೌಕಗಳ ಬಳಕೆಯನ್ನು ಅವುಗಳ ಪ್ರಾಚೀನತೆಯಿಂದಾಗಿ ಜನರು ವಿಶೇಷವಾಗಿ ಅನುಮೋದಿಸುವುದಿಲ್ಲ.

ನಿರ್ಧಾರವನ್ನು


ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ರೈಮ್ ಜನರೇಟರ್ ಅನ್ನು ಬಳಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬ್ಯಾಷ್‌ನಲ್ಲಿ ಬರೆಯುವುದು ಸರಳವಾದ ಪರಿಹಾರವಾಗಿದೆ ಎಂದು ನನಗೆ ತೋರುತ್ತದೆ - HOST, ಇದು ಪ್ರಾಥಮಿಕವಾಗಿ ಅವುಗಳನ್ನು ವ್ಯಂಜನದಿಂದ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕಾಗುಣಿತದಿಂದ ಅಲ್ಲ. ಯಾವ ರೀತಿಯ HOST? ಏಕೆಂದರೆ ನೀವು ಸೈಟ್‌ನ ನಿಜವಾದ ಹೆಸರನ್ನು ಸೂಚಿಸಿದರೆ, ಅವರು ಅದನ್ನು ಜಾಹೀರಾತು ಎಂದು ಹೇಳುತ್ತಾರೆ. ಅದನ್ನು ಏಕೆ ಬಳಸುವುದನ್ನು ಮುಂದುವರಿಸಬಾರದು? ಮೊದಲನೆಯದಾಗಿ, ವ್ಯಂಜನಗಳ ಆಧಾರದ ಮೇಲೆ ಪ್ರಾಸಗಳನ್ನು ಆಯ್ಕೆಮಾಡುವ ಅವನ ಪ್ರಯೋಜನದ ಹೊರತಾಗಿಯೂ, ಅವನು ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಚೌಕಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತಾನೆ. ಎರಡನೆಯದಾಗಿ, ನೀವು ಇನ್ನೂ ನಿಮ್ಮ ಮೆದುಳಿನೊಂದಿಗೆ ಯೋಚಿಸಬೇಕು, ಟ್ಯಾಬ್‌ಗಳ ನಡುವೆ ಬದಲಾಯಿಸುವ ಸಮಯವನ್ನು ಕಳೆಯಬೇಕು ಮತ್ತು ಎರಡು ಪದಗಳಿಗೆ ಪ್ರಾಸವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಪಟ್ಟಿಗಳಲ್ಲಿ ಪುನರಾವರ್ತಿತ ಪದಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವ ಶಕ್ತಿ.

ಬಲವಾದ ಪ್ರಾಸಗಳನ್ನು ಪಡೆಯುವುದು

ನನಗೇನು ಗೊತ್ತು? ಉಪಯುಕ್ತತೆಯ ಬಗ್ಗೆ ನನಗೆ ತಿಳಿದಿದೆ wget, ಇದು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ URL ನಲ್ಲಿ ಪುಟವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಸರಿ, ವಿನಂತಿಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸೋಣ - ಪ್ರಾಸಬದ್ಧ ಪದದೊಂದಿಗೆ ಹೆಸರಿನ ಫೈಲ್‌ನಲ್ಲಿ ನಾವು HTML ಪುಟವನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಉದಾಹರಣೆಗೆ, "ಇಲ್ಲಿ" ಎಂಬ ಪದವನ್ನು ಹುಡುಕೋಣ:

wget https://HOST/rifma/здесь

ಆದರೆ ನನಗೆ ಪದಗಳ ಪಟ್ಟಿ ಮಾತ್ರ ಬೇಕು, ಉಳಿದ ಎಲ್ಲವನ್ನೂ ನಾನು ಹೇಗೆ ತೊಡೆದುಹಾಕಬಹುದು? ನಾವು ನೋಡುತ್ತೇವೆ ಮತ್ತು ಪದಗಳ ಪಟ್ಟಿಯನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲಾಗಿದೆ, ಅದು ಎಷ್ಟೇ ವಿಚಿತ್ರವಾಗಿರಲಿ, ಪಟ್ಟಿಯ ರೂಪದಲ್ಲಿ ಮತ್ತು ಪದಗಳು ಟ್ಯಾಗ್‌ಗಳಲ್ಲಿವೆ . ಸರಿ, ನಾವು ಉತ್ತಮ ಉಪಯುಕ್ತತೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ. ಆದರೆ - ಈ ರೀತಿ ಬರೆಯೋಣ:

cat $word | grep '<li>' | sed -e "s%<li>%%" | sed -e "s%</li>%%" | sed -e "s/ //g" | sed -e "/^$/d" 1> $word

ಮೊದಲಿಗೆ, ವರ್ಡ್ ಫೈಲ್‌ನಿಂದ, ಟ್ಯಾಗ್ ಹೊಂದಿರುವ ಸಾಲುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ — ನಾವು ಖಾಲಿ ಟ್ಯಾಗ್‌ಗಳು ಮತ್ತು ಪದಗಳೊಂದಿಗೆ ಸಾಲುಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ. ನಾವು ಟ್ಯಾಗ್ ಅನ್ನು ಮತ್ತು ಅದರ ಮುಚ್ಚುವಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ - ಇಲ್ಲಿ ಸ್ಲ್ಯಾಷ್‌ಗಳ ಬದಲಿಗೆ ಶೇಕಡಾ ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಟ್ಯಾಗ್‌ನಲ್ಲಿಯೇ ಈಗಾಗಲೇ ಸ್ಲ್ಯಾಷ್ ಇದೆ, ಏಕೆ? ಆದರೆ ನಿನಗೆ ಸ್ವಲ್ಪವೂ ಅರ್ಥವಾಗುತ್ತಿಲ್ಲ. ಮತ್ತು ಆಸಕ್ತಿಯೊಂದಿಗೆ ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿದೆ. ನಾವು ಫೈಲ್‌ನಿಂದ ಎಲ್ಲಾ ಸ್ಥಳಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ, ಖಾಲಿ ಸಾಲುಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ. Voila - ಪದಗಳ ಸಿದ್ಧ ಪಟ್ಟಿ.

ಕೊನೆಯ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರಾಸಬದ್ಧ ಪದಗಳನ್ನು ತೆಗೆದುಹಾಕಲು, ಮೂಲ ಪದದಿಂದ ಕೊನೆಯ ಎರಡು ಅಕ್ಷರಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಪಟ್ಟಿಯನ್ನು ತೆರವುಗೊಳಿಸಿ:

squad=${word:((${#word}-2)):2}
cat $word | sed -e "/.$squad$/d" 1> $word

ನಾವು ನೋಡುತ್ತೇವೆ, ನಾವು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ - ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ ... ಆದ್ದರಿಂದ, "ಪ್ಲೇ" ಪದದ ಪಟ್ಟಿ ಎಲ್ಲಿದೆ? ಮತ್ತು "ನಾನು ಹೋಗುತ್ತಿದ್ದೇನೆ" ಎಂಬ ಪದಕ್ಕಾಗಿ? ಫೈಲ್ ಖಾಲಿಯಾಗಿದೆ! ಮತ್ತು ಇದೆಲ್ಲವೂ ಏಕೆಂದರೆ ಈ ಪದಗಳು ಕ್ರಿಯಾಪದಗಳಾಗಿವೆ, ಮತ್ತು ಕ್ರಿಯಾಪದಗಳೊಂದಿಗೆ ಪ್ರಾಸಬದ್ಧವಾಗಿರುವವರಿಗೆ ಅವರು ಏನು ಮಾಡುತ್ತಾರೆಂದು ನಮಗೆ ತಿಳಿದಿದೆ. ಕ್ರಿಯಾಪದ ಪ್ರಾಸವು ಚದರ ಪ್ರಾಸಕ್ಕಿಂತ ಕೆಟ್ಟದಾಗಿದೆ, ಏಕೆಂದರೆ ರಷ್ಯನ್ ಭಾಷೆಯು ಹೆಚ್ಚಿನ ಕ್ರಿಯಾಪದಗಳನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ಅವೆಲ್ಲವೂ ಒಂದೇ ಅಂತ್ಯಗಳನ್ನು ಹೊಂದಿವೆ, ಅದಕ್ಕಾಗಿಯೇ ಅವರು ಅಂತ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿದ ನಂತರ ಅಂತಿಮ ಫೈಲ್‌ನಲ್ಲಿ ಇರಲಿಲ್ಲ.

ಆದರೆ, ನಮಗೆ ಯಾವುದೇ ಆತುರವಿಲ್ಲ. ಪ್ರತಿ ಪದಕ್ಕೂ ಪ್ರಾಸಗಳು ಮಾತ್ರವಲ್ಲ, ಕೆಲವೊಮ್ಮೆ ಪ್ರಾಸಕ್ಕಿಂತ ಉತ್ತಮವಾಗಿ ಧ್ವನಿಸುವ ಅಸ್ಸೋನೆನ್ಸ್‌ಗಳೂ ಇವೆ - ಅದಕ್ಕಾಗಿಯೇ ಅವು ಅಸ್ಸೋನೆನ್ಸ್‌ಗಳಾಗಿವೆ (ಫ್ರೆಂಚ್ ಅಸೋನೆನ್ಸ್, ಲ್ಯಾಟಿನ್ ಅಸೋನೊದಿಂದ - ನಾನು ಸಾಮರಸ್ಯದಿಂದ ಧ್ವನಿಸುತ್ತೇನೆ).

ನಾವು ಅನುಬಂಧಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ

ಇಲ್ಲಿಂದ ಮೋಜು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ: ಪ್ರತ್ಯೇಕ URL ನಲ್ಲಿ ಮತ್ತು ಅದೇ ಪುಟದಲ್ಲಿ, ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ, HTTP ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಸ್ವೀಕರಿಸುವ ಮೂಲಕ ಅಸ್ಸೋನಾನ್ಸ್‌ಗಳು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ. ನಾನು ಹೇಗೆ ಹೇಳಲಿ wget'ನೀವು ಬಟನ್ ಒತ್ತುತ್ತೀರಾ? ಆದರೆ ದಾರಿಯಿಲ್ಲ. ದುಃಖದಿಂದ.

ಸಾಲಿನಲ್ಲಿರುವ URL ಹೇಗಾದರೂ ಬದಲಾಗುತ್ತಿರುವುದನ್ನು ಗಮನಿಸಿ, ನಾನು ಅಸೋನನ್ಸ್‌ಗೆ ಬದಲಾಯಿಸಿದ ನಂತರ ಅಲ್ಲಿದ್ದನ್ನು ನಕಲಿಸಿದೆ ಮತ್ತು ಅದನ್ನು ಹೊಸ ಬ್ರೌಸರ್ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ಅಂಟಿಸಿದ್ದೇನೆ - ಬಲವಾದ ರೈಮ್‌ಗಳು ತೆರೆದುಕೊಂಡಿವೆ. ಅದಲ್ಲ.

ಮೂಲಭೂತವಾಗಿ, ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆಯೇ ಅಥವಾ ವ್ಯಕ್ತಿಯು ಅದನ್ನು ಕೈಯಿಂದ ಟೈಪ್ ಮಾಡುತ್ತಾರೆಯೇ ಎಂಬುದು ಸರ್ವರ್‌ಗೆ ವಿಷಯವಲ್ಲ ಎಂದು ನಾನು ಭಾವಿಸಿದೆ. ಆದ್ದರಿಂದ? ಯಾರಿಗೆ ಗೊತ್ತು, ಅದನ್ನು ಪರಿಶೀಲಿಸೋಣ.

ಎಲ್ಲಿಗೆ ಕಳುಹಿಸಬೇಕು? ಏನು ಕಳುಹಿಸಬೇಕು? ಸರ್ವರ್ IP ಗೆ HTTP ವಿನಂತಿ, GET ನಂತಹ ಏನಾದರೂ ಇದೆ ... ನಂತರ ಏನೋ HTTP / 1.1 ಇದೆ ... ಬ್ರೌಸರ್ ಏನು ಕಳುಹಿಸುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಿಗೆ ಕಳುಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ನಾವು ನೋಡಬೇಕಾಗಿದೆ. ಸ್ಥಾಪಿಸಿ ವೈರ್ಷಾರ್ಕ್, ಟ್ರಾಫಿಕ್ ನೋಡಿ:

0040 37 5d a3 84 27 e7 fb 13 6d 93 ed cd 56 04 9d 82 7]£.'çû.m.íÍV...
0050 32 7c fb 67 46 71 dd 36 4d 42 3d f3 62 1b e0 ad 2|ûgFqÝ6MB=ób.à.
0060 ef 87 be 05 6a f9 e1 01 41 fc 25 5b c0 77 d3 94 ï.¾.jùá.Aü%[ÀwÓ.

ಉಮ್... ಏನು? ಓಹ್ ಹೌದು, ನಮ್ಮಲ್ಲಿ HTTPS ಇದೆ. ಏನ್ ಮಾಡೋದು? ನಿಮ್ಮ ಮೇಲೆ MITM ದಾಳಿಯನ್ನು ಪ್ರಾರಂಭಿಸುವುದೇ? ತಾತ್ತ್ವಿಕವಾಗಿ, ಬಲಿಪಶು ಸ್ವತಃ ನಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತಾರೆ.

ಸಾಮಾನ್ಯವಾಗಿ, ಬ್ರೌಸರ್ ಅನ್ನು ಸರ್ಫ್ ಮಾಡಲು ನಿರ್ಧರಿಸಿದ ನಂತರ, ನಾನು ಅಂತಿಮವಾಗಿ ವಿನಂತಿಯನ್ನು ಸ್ವತಃ ಮತ್ತು ವಿಳಾಸದಾರರನ್ನು ಕಂಡುಕೊಂಡೆ. ಹೋಗು:

ಟರ್ಮಿನಲ್‌ನೊಂದಿಗೆ ಸಂವಾದ

telnet IP PORT
Trying IP...
Connected to IP.
Escape character is '^]'.
GET /rifma/%D0%BC%D0%B0%D1%82%D1%8C?mode=block&type=asn HTTP/1.1
Host: HOST
Accept-Language: en-US,en;q=0.5
X-Requested-With: XMLHttpRequest
Connection: close

HTTP/1.1 400 Bad Request
Server: nginx/1.8.0
Date: Sun, 03 Nov 2019 20:06:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 270
Connection: close

<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.8.0</center>
</body>
</html>
Connection closed by foreign host.

ಹೇ. ಹೆಹೆಹೆ. ವಾಸ್ತವವಾಗಿ, HTTPS ಪೋರ್ಟ್‌ಗೆ ಬೇರ್ HTTP ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುವಾಗ ನಾನು ನಿರೀಕ್ಷಿಸಿದ್ದು ಅದನ್ನೇ. ನಾವು ಈಗ ಎನ್‌ಕ್ರಿಪ್ಟ್ ಮಾಡಬೇಕೇ? ಈ ಎಲ್ಲಾ ಗಡಿಬಿಡಿ RSA ಕೀಗಳೊಂದಿಗೆ, ನಂತರ SHA256 ಜೊತೆಗೆ. ಏಕೆ, ಇದೆ ಈಗ OpenSSL ಅಂತಹ ವಿಷಯಗಳಿಗಾಗಿ. ಸರಿ, ಏನು ಮಾಡಬೇಕೆಂದು ನಮಗೆ ಈಗಾಗಲೇ ತಿಳಿದಿದೆ, ನಾವು ಮೊದಲು ರೆಫರರ್ ಮತ್ತು ಕುಕೀ ಕ್ಷೇತ್ರಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ - ಅವರು ಈ ವಿಷಯದ ಮೇಲೆ ಹೆಚ್ಚು ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ:

ಟರ್ಮಿನಲ್‌ನೊಂದಿಗೆ ಸಂವಾದ

openssl s_client -connect IP:PORT
{Всякие ключи, сертификаты}
GET /rifma/%D0%B7%D0%B4%D0%B5%D1%81%D1%8C?mode=block&type=asn HTTP/1.1
Host: HOST
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/javascript,text/html,application/xml,text/xml,*/*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
X-Requested-With: XMLHttpRequest
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Status: 200 OK
Date: Sun, 03 Nov 2019 20:34:33 GMT
Set-Cookie: COOKIE
X-Powered-By: Phusion Passenger 5.0.16
Server: nginx/1.8.0 + Phusion Passenger 5.0.16
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: block-all-mixed-content
Content-Encoding: gzip

ಕಂಪ್ಯೂಟರ್ ಪ್ರಪಂಚದ ಬಗ್ಗೆ ಕಲಿಯುವ ವಿದ್ಯಾರ್ಥಿಯ ಮೆದುಳು ಏನು ಸಾಮರ್ಥ್ಯ ಹೊಂದಿದೆ?

ಇದೇನಿದು, ಸರ್ವರ ಮೇಲೂ ಆಣೆ? ಸರಿ, ಕನಿಷ್ಠ ಅವರು ನನಗೆ 200 ಸರಿ ಎಂದು ಉತ್ತರಿಸಿದ್ದಾರೆ, ಅಂದರೆ ಕುಕೀಗಳು ಮತ್ತು ರೆಫರರ್ ಯಾವುದನ್ನೂ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ. ಸಂಕೋಚನವು gzip ಆಗಿದೆ, ಆದರೆ ನಕಲು ಮಾಡುವಾಗ, ASCII ಅಕ್ಷರಗಳನ್ನು ನಕಲಿಸಲಾಗುತ್ತದೆ. ನಿಖರವಾಗಿ, ನೀವು ಸಾಲನ್ನು ತೆಗೆದುಹಾಕಬಹುದು ಸ್ವೀಕರಿಸಿ-ಎನ್ಕೋಡಿಂಗ್. ಎಲ್ಲವೂ ಉತ್ತಮವಾಗಿದೆ - ನಾವು HTML ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ, ಈಗ ಅಸೋನನ್ಸ್‌ಗಳೊಂದಿಗೆ. ಆದರೆ ಇಲ್ಲಿ ಎರಡು ಪ್ರಶ್ನೆಗಳಿವೆ: ಓಪನ್‌ಎಸ್‌ಎಸ್‌ಎಲ್ ಅನ್ನು ಚಲಾಯಿಸುವುದು ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಸಿ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸುವುದು ಹೇಗೆ? ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಸ್ವೀಕರಿಸಿದ ನಂತರ ನಾವು OpenSSL "ಶೆಲ್" ನಲ್ಲಿ ಉಳಿದಿದ್ದರೆ ಔಟ್ಪುಟ್ ಅನ್ನು ಹೇಗೆ ಓದುವುದು? ನೀವು ಎರಡನೆಯದರೊಂದಿಗೆ ಏನನ್ನಾದರೂ ಮಾಡಲು ಸಾಧ್ಯವಾದರೆ, ಆದರೆ ಮೊದಲನೆಯದರೊಂದಿಗೆ ...

ಇರುವುದು ಒಳ್ಳೆಯದು ಹಬ್ರ್ಅಲ್ಲಿ ನಾನು ಉಪಯುಕ್ತತೆಯ ಬಗ್ಗೆ ಓದಿದೆ ನಿರೀಕ್ಷಿಸಬಹುದು, ಇದು ಮಾನವ ಸಂವಹನವನ್ನು ನಿರೀಕ್ಷಿಸುವ ಕಾರ್ಯಕ್ರಮಗಳೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ. ತಂಡವನ್ನು ಹೊಂದಿರುವುದು ಇನ್ನಷ್ಟು ಆಕರ್ಷಕವಾಗಿದೆ ಸ್ವಯಂ ನಿರೀಕ್ಷೆ, ಉತ್ಪಾದಿಸುತ್ತಿದೆ ನಿರೀಕ್ಷಿಸಬಹುದು ನಿಮ್ಮ ಕ್ರಿಯೆಗಳ ಆಧಾರದ ಮೇಲೆ ಸ್ಕ್ರಿಪ್ಟ್. ಸರಿ, ನಾವು ಅದನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ, ಇದೆಲ್ಲವನ್ನೂ ಮಾಡಿ ಮತ್ತು ಮುಗಿದ ಸ್ಕ್ರಿಪ್ಟ್ ಇಲ್ಲಿದೆ. ಅವನು ಮಾತ್ರ ತುಂಬಾ ದೊಡ್ಡವನು, ಮತ್ತು ಎಲ್ಲಾ ಕಾರಣ ಈಗ OpenSSL ಪ್ರಮಾಣಪತ್ರಗಳು, ಕೀಗಳು ಮತ್ತು ಪ್ರದರ್ಶಿಸುತ್ತದೆ ನಿರೀಕ್ಷಿಸಬಹುದು ಇವೆಲ್ಲವುಗಳ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ ಕಾಯುತ್ತಿದೆ. ನಮಗೆ ಇದು ಅಗತ್ಯವಿದೆಯೇ? ಸಂ. ನಾವು ಸಂಪೂರ್ಣ ಮೊದಲ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ, ಕೊನೆಯ ಸಾಲಿನ ಬ್ರೇಕ್ 'r' ಅನ್ನು ಮಾತ್ರ ಬಿಡುತ್ತೇವೆ. ನಾವು ಬಳಕೆದಾರ-ಏಜೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ ವಿನಂತಿಯಿಂದ ಕ್ಷೇತ್ರಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತೇವೆ - ಅವು ಯಾವುದಕ್ಕೂ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ಪ್ರಾರಂಭಿಸೋಣ. ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗಿದೆ, ಆದರೆ ಅಮೂಲ್ಯವಾದ HTML ಡಾಕ್ಯುಮೆಂಟ್ ಎಲ್ಲಿದೆ? ನಿರೀಕ್ಷಿಸಬಹುದು ಅದನ್ನು ತಿಂದರು. ಅವನು ಅದನ್ನು ಉಗುಳುವಂತೆ ಮಾಡಲು, ನೀವು ಹಾಕಬೇಕು:

set results $expect_out(buffer)

ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಅಂತ್ಯದ ಮೊದಲು - ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಹೀಗೆ ಬರೆಯಲಾಗುತ್ತದೆ ನಿರೀಕ್ಷಿಸಬಹುದುom ಕಮಾಂಡ್ ಮತ್ತು ಪರದೆಯ ಮೇಲೆ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ. ಸಂಕ್ಷಿಪ್ತವಾಗಿ, ಈ ರೀತಿಯ ಏನಾದರೂ:

ಸ್ಕ್ರಿಪ್ಟ್ ನಿರೀಕ್ಷಿಸಬಹುದು

#!/usr/bin/expect -f

set timeout -1
spawn openssl s_client -connect IP:PORT
match_max 100000
expect -exact "
---r
"
send -- "GET /rifma/%d0%b7%d0%b4%d0%b5%d1%81%d1%8c?mode=block&type=asn HTTP/1.1rHost: HOSTrAccept-Language: en-US,en;q=0.5rX-Requested-With: XMLHttpRequestrConnection: close"
expect -exact "GET /rifma/%d0%b7%d0%b4%d0%b5%d1%81%d1%8c?mode=block&type=asn HTTP/1.1r
Host: HOSTr
Accept-Language: en-US,en;q=0.5r
X-Requested-With: XMLHttpRequestr
Connection: close"
send -- "r"
set results $expect_out(buffer)
expect -exact "r
"
send -- "r"
expect eof

ಆದರೆ ಅಷ್ಟೆ ಅಲ್ಲ! ನೀವು ನೋಡುವಂತೆ, ಎಲ್ಲಾ ಉದಾಹರಣೆಗಳಲ್ಲಿ ವಿನಂತಿಯ URL ಸ್ಥಿರವಾಗಿದೆ, ಆದರೆ ಇದು URL ಆಗಿದೆ, ಅದು ಯಾವ ಪದವನ್ನು ಅಸೋನೆನ್ಸ್‌ಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ ನಾವು ASCII ನಲ್ಲಿ "%d0%b7%d0%b4%d0%b5%d1%81%d1%8c" ಅಥವಾ UTF-8 ನಲ್ಲಿ "ಇಲ್ಲಿ" ಎಂಬ ಪದವನ್ನು ನಿರಂತರವಾಗಿ ಹುಡುಕುತ್ತೇವೆ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ. ಏನ್ ಮಾಡೋದು? ಸಹಜವಾಗಿ, ಪ್ರತಿ ಬಾರಿ ಹೊಸ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸರಳವಾಗಿ ರಚಿಸಿ, ಸ್ನೇಹಿತರೇ! ಇನ್ನು ಮುಂದೆ ಇಲ್ಲ ಸ್ವಯಂ ನಿರೀಕ್ಷೆ'ಓಹ್, ಮತ್ತು ಸಹಾಯದಿಂದ ಪ್ರತಿಧ್ವನಿ, ಏಕೆಂದರೆ ನಮ್ಮ ಹೊಸದರಲ್ಲಿ, ಪದವನ್ನು ಹೊರತುಪಡಿಸಿ ಏನೂ ಬದಲಾಗುವುದಿಲ್ಲ. ಮತ್ತು ಹೊಸ ಸಮಸ್ಯೆಯು ದೀರ್ಘಕಾಲ ಬದುಕಲಿ: ಸಿರಿಲಿಕ್‌ನಿಂದ URL ಸ್ವರೂಪಕ್ಕೆ ನಾವು ಹೇಗೆ ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಪದವನ್ನು ಅನುವಾದಿಸಬಹುದು? ಟರ್ಮಿನಲ್‌ಗೆ ವಿಶೇಷ ಏನೂ ಇಲ್ಲ. ಸರಿ, ಅದು ಸರಿ, ನಾವು ಅದನ್ನು ಮಾಡಬಹುದು, ಸರಿ? ಮಾಡಬಹುದು:

ನಾನು ಏನು ಮಾಡಬಹುದು ನೋಡಿ!

function furl {
furl=$(echo "$word" | sed 's:А:%d0%90:g;s:Б:%d0%91:g;s:В:%d0%92:g;s:Г:%d0%93:g;s:Д:%d0%94:g;s:Е:%d0%95:g;s:Ж:%d0%96:g;s:З:%d0%97:g;s:И:%d0%98:g;s:Й:%d0%99:g;s:К:%d0%9a:g;s:Л:%d0%9b:g;s:М:%d0%9c:g;s:Н:%d0%9d:g;s:О:%d0%9e:g;s:П:%d0%9f:g;s:Р:%d0%a0:g;s:С:%d0%a1:g;s:Т:%d0%a2:g;s:У:%d0%a3:g;s:Ф:%d0%a4:g;s:Х:%d0%a5:g;s:Ц:%d0%a6:g;s:Ч:%d0%a7:g;s:Ш:%d0%a8:g;s:Щ:%d0%a9:g;s:Ъ:%d0%aa:g;s:Ы:%d0%ab:g;s:Ь:%d0%ac:g;s:Э:%d0%ad:g;s:Ю:%d0%ae:g;s:Я:%d0%af:g;s:а:%d0%b0:g;s:б:%d0%b1:g;s:в:%d0%b2:g;s:г:%d0%b3:g;s:д:%d0%b4:g;s:е:%d0%b5:g;s:ж:%d0%b6:g;s:з:%d0%b7:g;s:и:%d0%b8:g;s:й:%d0%b9:g;s:к:%d0%ba:g;s:л:%d0%bb:g;s:м:%d0%bc:g;s:н:%d0%bd:g;s:о:%d0%be:g;s:п:%d0%bf:g;s:р:%d1%80:g;s:с:%d1%81:g;s:т:%d1%82:g;s:у:%d1%83:g;s:ф:%d1%84:g;s:х:%d1%85:g;s:ц:%d1%86:g;s:ч:%d1%87:g;s:ш:%d1%88:g;s:щ:%d1%89:g;s:ъ:%d1%8a:g;s:ы:%d1%8b:g;s:ь:%d1%8c:g;s:э:%d1%8d:g;s:ю:%d1%8e:g;s:я:%d1%8f:g;s:ё:%d1%91:g;s:Ё:%d0%81:g')}

ಒಟ್ಟಾರೆಯಾಗಿ, ನಾವು ಒಂದು ಪದವನ್ನು ASCII ಪಠ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ, OpenSSL ಮೂಲಕ ಸರ್ವರ್‌ನಿಂದ ಅಸೋನನ್ಸ್‌ಗಳೊಂದಿಗೆ ಸೈಟ್ ಪುಟವನ್ನು ವಿನಂತಿಸುವ ಮತ್ತೊಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ. ತದನಂತರ ನಾವು ಕೊನೆಯ ಸ್ಕ್ರಿಪ್ಟ್‌ನ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಫೈಲ್‌ಗೆ ಮರುನಿರ್ದೇಶಿಸುತ್ತೇವೆ ಮತ್ತು ಹಳೆಯ ಶೈಲಿಯಲ್ಲಿ ಅದನ್ನು ರವಾನಿಸುತ್ತೇವೆ "ಫಿಲ್ಟರ್‌ಗಳು" ಹೆಚ್ಚುವರಿ ಚೌಕಗಳು ಮತ್ತು ಅವುಗಳನ್ನು ಫೈಲ್‌ಗೆ ಬರೆಯಿರಿ.

ಅನೇಕರ ಛೇದಕ. ಬಾಟಮ್ ಲೈನ್

ವಾಸ್ತವವಾಗಿ, ಇದು ನಿಖರವಾಗಿ ಕಡಿಮೆ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ನಾವು ಎರಡು ಪದಗಳಿಗೆ ಮೇಲಿನ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ, ನಂತರ ಎರಡು ಪಟ್ಟಿಗಳಿಂದ ನಾವು ಪ್ರತಿ ಪದವನ್ನು ಪ್ರತಿಯೊಂದಕ್ಕೂ ಹೋಲಿಸುತ್ತೇವೆ ಮತ್ತು ಹೊಂದಾಣಿಕೆ ಕಂಡುಬಂದರೆ, ನಾವು ಅದನ್ನು ಔಟ್ಪುಟ್ ಮಾಡುತ್ತೇವೆ. ಈಗ ನಾವು ಎರಡು ಪದಗಳನ್ನು ಇನ್‌ಪುಟ್‌ನಂತೆ ತೆಗೆದುಕೊಳ್ಳುವ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಎರಡರಲ್ಲೂ ಪ್ರಾಸಬದ್ಧವಾಗಿರುವ ಪದಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತೇವೆ ಮತ್ತು ಅಸೋನನ್ಸ್‌ಗಳನ್ನು ಸಹ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ, ಮತ್ತು ನಾಲ್ಕು ಟ್ಯಾಬ್‌ಗಳ ನಡುವೆ ಹಸ್ತಚಾಲಿತವಾಗಿ ಬದಲಾಯಿಸದೆ ಮತ್ತು “ಕಣ್ಣಿನಿಂದ” ಪದಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳದೆ - ಎಲ್ಲವನ್ನೂ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ, ಲೆಕ್ಕಹಾಕಲಾಗಿದೆ ಫಾರ್ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕರಿಸಲಾಗಿದೆ. ಅದ್ಭುತ.

ಒಬ್ಬ ವ್ಯಕ್ತಿಗೆ ಏನಾದರೂ ಅಗತ್ಯವಿದ್ದರೆ, ಅವನು ಅದನ್ನು ಹೇಗಾದರೂ ಮಾಡುತ್ತಾನೆ ಎಂದು ತೋರಿಸುವುದು ಈ ಪ್ರಕಟಣೆಯ ಉದ್ದೇಶವಾಗಿತ್ತು. ತುಂಬಾ ನಿಷ್ಪರಿಣಾಮಕಾರಿ, ವಕ್ರ, ತೆವಳುವ, ಆದರೆ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ