เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพ เชตเชฟเชถเซ‡ เชถเซ€เช–เชคเชพ เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€เชจเซเช‚ เชฎเช—เชœ เชถเซเช‚ เชธเช•เซเชทเชฎ เช›เซ‡?

เชฆเชฟเชตเชธเชจเซ‹ เชธเชฎเชฏ

เชฌเชพเชถเชฎเชพเช‚ เชฌเซ€เชœเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เชตเชพเชจเซเช‚ เชธเชฎเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เชฌเชงเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช, เชชเชฐเช‚เชคเซ เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชนเซเช‚ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เชฎเซ‡เช‚ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชˆ เช…เชถเซเชฒเซ€เชฒเชคเชพ เช…เชจเซ‡ เช•เซเชฐเซ‡เชšเซ‡เชธ เชฒเช–เซเชฏเชพ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเชœเซ€ เชธเซเชงเซ€ เชœเซเชžเชพเชจเชจเซเช‚ เชตเซ‡เช—เชจ เชจเชฅเซ€. เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช—เชจเซเช‚ เช•เซ‡เชฐเชฟเช•เซ‡เชšเชฐ.

เช‰เชฆเซเชฆเซ‡เชถ


เช† เชฎเชพเชŸเซ‡ เช•เช‚เชˆเช• เชœเชฐเซ‚เชฐเซ€ เชฌเชจเซเชฏเซเช‚:

  • เชšเซ‹เชฐเชธ เชธเชฟเชตเชพเชฏ เชถเชฌเซเชฆ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชœเซ‹เชกเช•เชฃเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€
  • เชฌเซ‡ เชถเชฌเซเชฆเซ‹เชจเชพ เช…เชจเซ‡เช• เชœเซ‹เชกเช•เชฃเชพเช‚ เชชเชพเชฐ เช•เชฐเซเชฏเชพ

เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡? เช เซ€เช• เช›เซ‡, เชคเซ‡ เช›เซ‡ - เช…เชจเซ‡ เชคเซ‡ เช›เซ‡.
เช•เซ‹เชฃ เชจเชฅเซ€ เชœเชพเชฃเชคเซเช‚, เชšเซ‹เชฐเชธ เช•เชตเชฟเชคเชพ (เชธเชพเชฎเชพเชจเซเชฏ เชญเชพเชทเชพเชฎเชพเช‚ - เชเช• เชšเซ‹เชฐเชธ) เช เชฌเซ‡ เชถเชฌเซเชฆเซ‹ เช›เซ‡ เชœเซ‡เชจเชพ เชœเซ‹เชกเชฃเซ€เชจเชพ เช›เซ‡เชฒเซเชฒเชพ เชฌเซ‡ เช…เช•เซเชทเชฐเซ‹ เชเช•เชฐเซ‚เชช เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ (เช˜เชฃเซ€เชตเชพเชฐ, เช† เชเช•เชฎเชพเชคเซเชฐ เชตเชธเซเชคเซ เช›เซ‡) เชคเซ‡เชฎเชจเซ‡ เชเช• เช•เชตเชฟเชคเชพ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช—เซเชฒเชพเชฌ เชนเชฟเชฎเชพเชšเซเช›เชพเชฆเชฟเชค เช›เซ‡; เชŸเชพเชฏเชฐ - เช•เชพเชฐ. เช†เชงเซเชจเชฟเช• เชšเช•เชพเชธเชฃเซ€เชฎเชพเช‚ เชšเซ‹เชฐเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเซ‡เชฎเชจเซ€ เช†เชฆเชฟเชฎเชคเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฒเซ‹เช•เซ‹ เชฆเซเชตเชพเชฐเชพ เช–เชพเชธ เชฎเช‚เชœเซ‚เชฐ เชฅเชคเซ‹ เชจเชฅเซ€.

เชจเชฟเชฐเซเชฃเชฏ


เชฎเชจเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชฌเชพเชถเชฎเชพเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เชตเซ€ เช เชธเซŒเชฅเซ€ เชธเชฐเชณ เช‰เชชเชพเชฏ เช›เซ‡ เชœเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชฐเชนเซ‡เชฒเชพ เช•เชตเชฟเชคเชพ เชœเชจเชฐเซ‡เชŸเชฐ - HOST เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชคเซ‡เชฎเชจเซ‡ เชตเซเชฏเช‚เชœเชจ เชฆเซเชตเชพเชฐเชพ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹เชกเชฃเซ€ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚. เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซเช‚ HOST? เช•เชพเชฐเชฃ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เชธเชพเชˆเชŸเชจเซเช‚ เชธเชพเชšเซเช‚ เชจเชพเชฎ เชฆเชฐเซเชถเชพเชตเซ‹ เช›เซ‹, เชคเซ‹ เชคเซ‡เช“ เช•เชนเซ‡เชถเซ‡ เช•เซ‡ เชคเซ‡ เชเช• เชœเชพเชนเซ‡เชฐเชพเชค เช›เซ‡. เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชšเชพเชฒเซ เชฐเชพเช–เชคเชพ เชจเชฅเซ€? เชธเซŒเชชเซเชฐเชฅเชฎ, เชตเซเชฏเช‚เชœเชจ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชœเซ‹เชกเช•เชฃเชพเช‚ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเชพ เชคเซ‡เชจเชพ เชซเชพเชฏเชฆเชพ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซ‡ เชนเชœเซ€ เชชเชฃ เช˜เชฃเซ€เชตเชพเชฐ เชšเซ‹เชฐเชธ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชฌเซ€เชœเซเช‚, เชคเชฎเชพเชฐเซ‡ เชนเชœเซ เชชเชฃ เชคเชฎเชพเชฐเชพ เชฎเช—เชœเชฅเซ€ เชตเชฟเชšเชพเชฐเชตเซเช‚ เชชเชกเชถเซ‡, เชŸเซ…เชฌเซเชธ เชตเชšเซเชšเซ‡ เชธเซเชตเชฟเชš เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡, เช…เชจเซ‡ เชฌเซ‡ เชถเชฌเซเชฆเซ‹ เชฎเชพเชŸเซ‡ เช•เชตเชฟเชคเชพ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เชฏเชพเชฆเซ€เชฎเชพเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชถเชฌเซเชฆเซ‹ เชฏเชพเชฆ เชฐเชพเช–เชตเชพเชจเซ€ เชŠเชฐเซเชœเชพ.

เชฎเชœเชฌเซ‚เชค เชœเซ‹เชกเช•เชฃเชพเช‚ เชฎเซ‡เชณเชตเชตเซ€

เชนเซเช‚ เชถเซเช‚ เชœเชพเชฃเซเช‚? เชนเซเช‚ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชตเชฟเชถเซ‡ เชœเชพเชฃเซเช‚ เช›เซเช‚ เชตเซ‡เช—, เชœเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค 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

เชชเซเชฐเชฅเชฎ, เชถเชฌเซเชฆ เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€, เชŸเซ‡เช— เชงเชฐเชพเชตเชคเซ€ เชฐเซ‡เช–เชพเช“ เชชเชธเช‚เชฆ เช•เชฐเซ‹ - เช…เชฎเชจเซ‡ เชถเชฌเซเชฆเซ‹ เชธเชพเชฅเซ‡ เช–เชพเชฒเซ€ เชŸเซ…เช—เซเชธ เช…เชจเซ‡ เชฐเซ‡เช–เชพเช“เชจเซ‹ เชธเชฎเซ‚เชน เชฎเชณเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชŸเซ…เช—เชจเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฌเช‚เชงเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช - เช…เชนเซ€เช‚ เชธเซเชฒเซ‡เชถเชจเซ‡ เชฌเชฆเชฒเซ‡ เชŸเช•เชพ เชชเซเชฐเชคเซ€เช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชŸเซ…เช—เชฎเชพเช‚ เชœ เชคเซเชฏเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเซเชฒเซ‡เชถ เช›เซ‡, เชถเชพ เชฎเชพเชŸเซ‡? เชชเชฐเช‚เชคเซ เชคเชฎเชจเซ‡ เชฅเซ‹เชกเซเช‚ เชธเชฎเชœเชพเชคเซเช‚ เชจเชฅเซ€. เช…เชจเซ‡ เชตเซเชฏเชพเชœ เชธเชพเชฅเซ‡ เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡. เช…เชฎเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เชฌเชงเซ€ เชœเช—เซเชฏเชพเช“ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช, เช–เชพเชฒเซ€ เชฒเซ€เชŸเซ€เช“ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช. เชตเซ‹เช‡เชฒเชพ - เชถเชฌเซเชฆเซ‹เชจเซ€ เชคเซˆเชฏเชพเชฐ เชธเซ‚เชšเชฟ.

เช›เซ‡เชฒเซเชฒเชพ เช…เช•เซเชทเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชœเซ‹เชกเช•เชฃเชพเช‚ เชงเชฐเชพเชตเชคเชพ เชถเชฌเซเชฆเซ‹เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‚เชณ เชถเชฌเซเชฆเชฎเชพเช‚เชฅเซ€ เช›เซ‡เชฒเซเชฒเชพ เชฌเซ‡ เช…เช•เซเชทเชฐเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช…เชจเซ‡ เชธเซ‚เชšเชฟ เชธเชพเชซ เช•เชฐเซ‹:

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

เช…เชฎเซ‡ เชœเซ‹เชˆเช เช›เซ€เช, เช…เชฎเซ‡ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เช›เซ€เช - เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡... เชคเซ‹, "เชชเซเชฒเซ‡" เชถเชฌเซเชฆเชจเซ€ เชธเซ‚เชšเชฟ เช•เซเชฏเชพเช‚ เช›เซ‡? เช…เชจเซ‡ "เชนเซเช‚ เชœเชพเช‰เช‚ เช›เซเช‚" เชถเชฌเซเชฆ เชฎเชพเชŸเซ‡? เชซเชพเชˆเชฒ เช–เชพเชฒเซ€ เช›เซ‡! เช…เชจเซ‡ เช† เชฌเชงเซเช‚ เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช† เชถเชฌเซเชฆเซ‹ เช•เซเชฐเชฟเชฏเชพเชชเชฆเซ‹ เช›เซ‡, เช…เชจเซ‡ เช†เชชเชฃเซ‡ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‡เช“ เช•เซเชฐเชฟเชฏเชพเชชเชฆเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเช•เชฃเชพเช‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชฎเชจเซ‡ เชคเซ‡เช“ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡. เช•เซเชฐเชฟเชฏเชพเชชเชฆเชจเซ€ เช•เชตเชฟเชคเชพ เชšเซ‹เชฐเชธ เช•เชตเชฟเชคเชพ เช•เชฐเชคเชพเช‚ เชชเชฃ เช–เชฐเชพเชฌ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชฐเชถเชฟเชฏเชจ เชญเชพเชทเชพเชฎเชพเช‚ เชธเซŒเชฅเซ€ เชตเชงเซ เช•เซเชฐเชฟเชฏเชพเชชเชฆเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชฌเชงเชพเชจเซ‹ เช…เช‚เชค เชธเชฎเชพเชจ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœ เช…เช‚เชคเชจเซ‡ เชคเชชเชพเชธเซเชฏเชพ เชชเช›เซ€ เชคเซ‡เช“ เช…เช‚เชคเชฟเชฎ เชซเชพเช‡เชฒเชฎเชพเช‚ เชจ เชนเชคเชพ.

เชœเซ‹ เช•เซ‡, เช…เชฎเชจเซ‡ เช•เซ‹เชˆ เช‰เชคเชพเชตเชณ เชจเชฅเซ€. เชฆเชฐเซ‡เช• เชถเชฌเซเชฆ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ เชœเซ‹เชกเช•เชฃเชพเช‚ เชœ เชจเชฅเซ€, เชชเชฃ เชธเช‚เชตเชพเชฆเซ‹ เชชเชฃ เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡ เช•เซเชฏเชพเชฐเซ‡เช• เช•เชตเชฟเชคเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเชพเชฐเชพ เชฒเชพเช—เซ‡ เช›เซ‡ - เชคเซ‡เชฅเซ€ เชœ เชคเซ‡ เชธเช‚เชตเชพเชฆเซ‹ เช›เซ‡ (เชซเซเชฐเซ‡เชจเซเชš เชเชธเซ‹เชจเชจเซเชธ, เชฒเซ‡เชŸเชฟเชจ เชเชธเซ‹เชจเซ‹เชฎเชพเช‚เชฅเซ€ - เชนเซเช‚ เชธเซ‚เชฐเชฎเชพเช‚ เช…เชตเชพเชœ เช•เชฐเซเช‚ เช›เซเช‚).

เช…เชฎเชจเซ‡ เชธเช‚เช—เชค เชฎเชณเซ‡ เช›เซ‡

เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เช†เชจเช‚เชฆ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡: เช…เชจเซเชธเช‚เชงเชพเชจ เชเช• เช…เชฒเช— URL เชชเชฐ เชฆเซ‡เช–เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชœ เชชเซƒเชทเซเช  เชชเชฐ, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซ€เชจเซ‡, HTTP เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเซ€เชจเซ‡ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชจเซ‡. เชนเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชนเซ€ เชถเช•เซเช‚ เชตเซ‡เช—'เชคเชฎเซ‡ เชฌเชŸเชจ เชฆเชฌเชพเชตเซ‹ เช›เซ‹? เชชเชฐเช‚เชคเซ เช•เซ‹เชˆ เชฐเชธเซเชคเซ‹ เชจเชฅเซ€. เชฆเซเชƒเช–เชฆ.

เชฒเซ€เชŸเซ€เชฎเชพเช‚เชจเซเช‚ 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 เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹, เช•เซ€เช“ เช…เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชชเซ‡เช•เซเชทเชพ เช† เชฌเชงเชพเชจเชพ เช†เช‰เชŸเชชเซเชŸเชจเซ€ เชฐเชพเชน เชœเซเช เช›เซ‡. เชถเซเช‚ เช†เชชเชฃเชจเซ‡ เช†เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡? เชจเชพ. เช…เชฎเซ‡ เชธเชฎเช—เซเชฐ เชชเซเชฐเชฅเชฎ เชชเซเชฐเซ‹เชฎเซเชชเซเชŸเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช, เชซเช•เซเชค เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจ เชฌเซเชฐเซ‡เช• '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 เชŸเซ‡เช•เซเชธเซเชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชฌเซ€เชœเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เช“เชชเชจเชเชธเชเชธเชเชฒ เชฆเซเชตเชพเชฐเชพ เชธเชฐเซเชตเชฐเชฅเซ€ เช…เชจเซเชธเช‚เชงเชพเชจ เชธเชพเชฅเซ‡ เชธเชพเช‡เชŸ เชชเซƒเชทเซเช เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เชชเช›เซ€ เช†เชชเชฃเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เชซเชพเชˆเชฒ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซ‚เชจเชพ เชœเชฎเชพเชจเชพเชจเซ€ เชฐเซ€เชคเซ‡, เชคเซ‡เชจเซ‡ เชชเชธเชพเชฐ เช•เชฐเซ€เช เช›เซ€เช. "เชซเชฟเชฒเซเชŸเชฐเซเชธ" เชตเชงเชพเชฐเชพเชจเชพ เชšเซ‹เชฐเชธ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฒเช–เซ‹.

เช˜เชฃเชพเชจเชพ เช†เช‚เชคเชฐเช›เซ‡เชฆ. เชจเซ€เชšเซ‡ เชฒเซ€เชŸเซ€

เช–เชฐเซ‡เช–เชฐ, เช† เชคเซ‡ เชœ เช›เซ‡ เชœเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชฌเซ‡ เชถเชฌเซเชฆเซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชนเชพเชฅ เชงเชฐเซ€เช เช›เซ€เช, เชชเช›เซ€ เชฌเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚เชฅเซ€ เช…เชฎเซ‡ เชฆเชฐเซ‡เช• เชถเชฌเซเชฆเชจเซ€ เชฆเชฐเซ‡เช• เชธเชพเชฅเซ‡ เชคเซเชฒเชจเชพ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซ‹ เช•เซ‹เชˆ เชฎเซ‡เชš เชœเซ‹เชตเชพ เชฎเชณเซ‡ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเซ€เช เช›เซ€เช. เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡ เชฌเซ‡ เชถเชฌเซเชฆเซ‹เชจเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชถเชฌเซเชฆเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เชฌเช‚เชจเซ‡ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช…เชจเซเช•เชฐเชฃเซ‹เชจเซ‡ เชชเชฃ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เช…เชจเซ‡ เช† เชฌเชงเซเช‚ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชšเชพเชฐ เชŸเซ…เชฌเซเชธ เชตเชšเซเชšเซ‡ เชธเซเชตเชฟเชš เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช…เชจเซ‡ "เช†เช‚เช– เชฆเซเชตเชพเชฐเชพ" เชถเชฌเซเชฆเซ‹ เชฏเชพเชฆ เชฐเชพเช–เซเชฏเชพ เชตเชฟเชจเชพ - เชฌเชงเซเช‚ เชเช•เชคเซเชฐเชฟเชค, เชเช•เชพเช‰เชจเซเชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เชฆเซเชญเซเชค.

เช† เชชเซเชฐเช•เชพเชถเชจเชจเซ‹ เชนเซ‡เชคเซ เช เชฌเชคเชพเชตเชตเชพเชจเซ‹ เชนเชคเซ‹ เช•เซ‡ เชœเซ‹ เช•เซ‹เชˆ เชตเซเชฏเช•เซเชคเชฟเชจเซ‡ เช•เซ‹เชˆ เชตเชธเซเชคเซเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡ เช•เชฐเชถเซ‡. เช–เซ‚เชฌ เชœ เชฌเชฟเชจเช…เชธเชฐเช•เชพเชฐเช•, เช•เซเชŸเชฟเชฒ, เชตเชฟเชฒเช•เซเชทเชฃ, เชชเชฐเช‚เชคเซ เชคเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹