Requests: ํ™•์ธ=๊ฑฐ์ง“ ๋ฐ requests.packages.urllib3.disable_warnings()

์— ๋งŒ๋“  2014๋…„ 09์›” 09์ผ  ยท  57์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: psf/requests

urllib3 1.9๋ถ€ํ„ฐ ๋‹ค์Œ ๊ฒฝ๊ณ ๊ฐ€ ํ˜ธ์ถœ๋‹น ํ•œ ๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

/usr/local/lib/python2.7/site-packages/requests-2.4.0-py2.7.egg/requests/packages/urllib3/connectionpool.py:730: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html (This warning will only appear once by default.)
  InsecureRequestWarning)

verify=False ์‚ฌ์šฉํ•  ๋•Œ requests.packages.urllib3.disable_warnings() ๋„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ• ๊นŒ์š”?

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋””์ž์ธ ๊ฒฐ์ •์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. :)

Contributor Friendly Feature Request Planned

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜๋Š” ๊ฐ„๋‹จํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค.

requests.packages.urllib3.disable_warnings()

๋ชจ๋“  57 ๋Œ“๊ธ€

warnings ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ ์ˆ˜์ค€์—์„œ ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋กœ๊น… ์ž‘์—…์„ ํ•˜๋ ค๋ฉด(์ œ ๊ธฐ์–ต์ด ๋งž๋‹ค๋ฉด) urllib3 ์— ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค). ์‚ฌ์ด.

์ €๋Š” ์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์— ๊ฐ•๋ ฅํžˆ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๊ทธ๋“ค์€ ์„ฑ๊ฐ€์‹  ์ผ์ด์ง€๋งŒ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์ด๋“  ์ „์›์„ ๋„๊ณ  ์šฐ๋ฆฌ ์ œํ’ˆ์œผ๋กœ ๊ต์ฒดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค! =ํ”ผ

์ด ์‹œ์ ์—์„œ @Lukasa ์™€ ๋‚˜๋Š” ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด -1์ด๋ผ๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. @kennethreitz @shazow ์˜๊ฒฌ์ด ์žˆ์œผ ์‹ญ๋‹ˆ๊นŒ?

์–ด๋Š ์ •๋„ ๊ฒฝ๊ณ ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€๋งŒ ๊ณ ๋ คํ•ด์•ผ ํ•  ์—ฌ๋Ÿฌ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž์˜ ๊ด€์ ์—์„œ ๋‚ด๊ฐ€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๊ณ , ๋‚ด๊ฐ€ ์˜ํ–ฅ์ด ์žˆ์œผ๋ฉด ์ด ๊ธฐ๋Šฅ์„ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ํŒจํ‚ค์ง€์— ์ต์ˆ™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌธ์„œ๋ฅผ ์ฝ์„ ๋•Œ ๊ฒฝ๊ณ ์—์„œ ํ•ด๋‹น ์†”๋ฃจ์…˜์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” @Lukasa ๊ฐ€ requests ํŠน์ •ํ•œ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ œ์‹œํ•œ ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์˜ค๋Š˜ pyvmomi ์™€ ํ•จ๊ป˜ pip ๋ฅผ ์„ค์น˜ํ–ˆ๋Š”๋ฐ ๋‚ด๋ถ€์—์„œ requests ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. requests ๊ฐ€ ์ž๋™ ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด์ง€๋Š” ๋ถˆํˆฌ๋ช…ํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

์˜ˆ, requests.packages.urllib3.disable_warnings() ๋Š” ๊ฒฝ๊ณ  ๋ชจ๋“ˆ์˜ ํ•„ํ„ฐ๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์ œํ•˜๋Š” ์ง€๋ฆ„๊ธธ์ž…๋‹ˆ๋‹ค.

์ด ํšจ๊ณผ์— ๋Œ€ํ•ด ์ผ์ข…์˜ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. urllib3๋ฅผ ์ „ํŒŒํ•˜๋Š” ๋ฐ +0.5, ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์ด๊ณ  ํŠน์ • ์š”์ฒญ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ +1. -1 ๊ฒฝ๊ณ  ์—†์Œ.

์›ํ•˜๋Š” ๊ฒฝ์šฐ urllib3 ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋™์ผํ•œ ๋…ผ๋ฆฌ๋ฅผ ํ”ผ๊ธฐ๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ง์”€๋“œ๋ฆฌ์ง€๋งŒ ์ €๋Š” ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ๋Œ€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋งค์šฐ ๊ฐ€์น˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ pyvmomi๊ฐ€ TLS ์ธ์ฆ์„œ ํ™•์ธ์„ ํ•ด์ œํ–ˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค!

์ฆ‰, ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋” ๋งŽ์€ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ •๋ง๋กœ ์ด๊ฒƒ์ด pyvmomi ์˜ ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‹นํ™ฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋„๊ตฌ์—์„œ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ๊ฐ€ ์ธ์ฆ์„œ ํ™•์ธ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ๋„๊ตฌ๊ฐ€ ๋งŒ๋“œ๋Š” ์—ฐ๊ฒฐ์ด ์‚ฌ์šฉ์ž๋ฅผ MITM ๊ณต๊ฒฉ์— ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋Š” _not_ ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ† ๋ก ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์˜๊ฒฌ์„ ์ œ์‹œํ•˜๊ณ  ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ทธ ์ด์œ ์—์„œ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋ฅผ ๋ณด๊ธฐ๊ฐ€ ์–ด๋ ค์› ์–ด์š”! :)

์‹œ๊ฐ„์ด ํ—ˆ๋ฝํ•˜๋Š” ํ•œ ์˜ค๋Š˜ ํŒจ์น˜์—์„œ ์ž‘์—…ํ•˜์—ฌ ์นจ๋ฌต์„ ์œ„ํ•œ '์š”์ฒญ-y' ๋ฐฉ์‹์„ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

@invisiblethreat ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์–ธ์ œ๋“ ์ง€ IRC์— ๋›ฐ์–ด๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›นํ›…์—์„œ ์š”์ฒญ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์˜ JSON ์ถœ๋ ฅ์„ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š๋„๋ก ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” ๋ˆ„๋ฝ๋œ ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๊นŒ?).

@macterra ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๋˜๋Š” ...๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์ฒด ์ „๋žต์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์›นํ›…์ด ์ธ์ฆ์„œ ํ™•์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์ด์œ ๋„ ๋งค์šฐ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋†”๋‘๊ณ  ์‹ถ์—ˆ๋‹ค.

๋˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ์—์„œ stdout์„ ํŒŒ์ดํ•‘ํ•˜๋Š” ๊ฒฝ์šฐ stderr์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ JSON ์ถœ๋ ฅ์„ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๊ฐ€ stderr์— ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์˜ ์ถœ๋ ฅ์„ ๋ณด๊ณ ๋Š” ์•Œ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์‹ค์ˆ˜์˜€์Šต๋‹ˆ๋‹ค.

urllib3์˜ ๋ฌธ์„œ ๋Œ€์‹  ์š”์ฒญ ๋ฌธ์„œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ์ด๊ฒƒ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ๊ณ  ๊ธฐ๋Šฅ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ œ์–ด๋˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

requests ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์ด ์žˆ๊ณ  verify=False ์ธ์ˆ˜๋กœ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋‚ด ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๊ณ ๋Š” ์ค‘์š”ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ ,

๋‚ด ๋ชจ๋“ˆ์ด ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€๋งŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ requests ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ _๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ๋„ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ๋ชจ๋“ˆ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง€์‹œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ™ฉ์ด ๋” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. requests ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  ๊ฒƒ์„ ์นจ๋ฌต์‹œํ‚ค๊ฑฐ๋‚˜ ๋ฉ”๋ชจํ•˜๋Š” ์˜ต์…˜๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ธ€๋กœ๋ฒŒ ๊ฒฝ๊ณ ๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

urllib3.HTTPSConnectionPool ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  _validate_conn() ์žฌ์ •์˜ํ•˜๊ณ  requests ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š๋„๋ก ๋‚ด ๋ชจ๋“ˆ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ„๋‹จํ•œ ์ผ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ž‘์—…์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. .

์ด ๊ฒฝ๊ณ  ๊ธฐ๋Šฅ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

verify=False ํ•˜๋ฉด ๋” ์ด์ƒ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ๋ณดํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. IMHO๋Š” ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์•„๋‹ˆ๋ผ _์•„๋‹Œ_ ๋งค์šฐ ๊ด€๋ จ์„ฑ์ด ๋†’์€ ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ชฐ๋ž๋˜ ์‚ฌ์šฉ์ž๋Š” ์ด์ œ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ž„์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๊ฐ€ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ๊ฐ€์น˜๊ฐ€ ์—†๋‹ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—๋Š” ๊ฐ€์น˜๊ฐ€ ์—†์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค(ํ•œ ๋„คํŠธ์›Œํฌ ์ง€์ ์—์„œ ๋ณด์•ˆ์„ ํฌ๊ธฐํ•˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ๊ณณ์—์„œ ์ด์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค). ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์š”์ฒญ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ verify=False ๋ฅผ ์š”์ฒญํ•˜๋ฉด ๊ฒฝ๊ณ  ํ‘œ์‹œ ๊ฐ’์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋“ˆ ์ž‘์„ฑ์ž๋กœ์„œ verify=False ๋ฅผ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ์ œ๊ฐ€ ์•…์˜์ ์ด์ง€๋งŒ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๊ณ ๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์‚ฌ์‹ค, ๋‚˜๋Š” ์•…์˜์ ์ธ ํ–‰๋™์„ ํ”ผํ•˜๊ณ  ๊ฒฝ๊ณ ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ๋ฌด์Œํ™”ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๋ฌด์˜์‹์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ฑฐ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ์ผœ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ์›ํ•˜๋Š” ์š”์ฒญ๋„ ์ˆจ๊น๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ๋˜ํ•œ ํŠน์ • ์š”์ฒญ์˜ URL์„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ•œ ๋„คํŠธ์›Œํฌ ์ง€์ ์—์„œ ๋ณด์•ˆ์„ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ๋“  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ์“ธ๋ชจ ์—†๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์–ด๋Š ๋ธŒ๋ผ์šฐ์ € ๊ณต๊ธ‰์—…์ฒด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ URL์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋จธ์ง€๋Š” ๊ณ„์† ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋กœ ๋‚ด๋ถ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ํ˜ธ์ŠคํŠธ์™€๋„ ํ†ต์‹ ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์™ธ๋ถ€ ํ†ต์‹ ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์‚ฌ์šฉ์ž๋กœ์„œ ์‹ค์ˆ˜๋กœ ๋ณด์•ˆ๋˜์ง€ ์•Š์€ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ณ  ์‹ถ์€ ์ƒํ™ฉ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ service_foo ๋งŒ๋“ค๊ณ  ์žˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ์•ฑ์—์„œ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์„ธ์š”.

import service_foo
import requests

session = service_foo.Session('https://10.0.0.1', verify=False)
data = session.get_data()
requests.put('https://example.com/submit', data=data)

service_foo ๋Œ€ํ•œ 2๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋‚˜๋Š” ๊ธ€๋กœ๋ฒŒ ๋ณด์•ˆ ๊ฒฝ๊ณ ๋ฅผ ๊ณ„์†

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด https://10.0.0.1 ๋Œ€ํ™”ํ•  ๋•Œ ์‚ฌ์šฉ์ž๋Š” ํ•ญ์ƒ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

    • https://example.com/submit ์š”์ฒญ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์‚ฌ์šฉ์ž๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. ๊ธ€๋กœ๋ฒŒ ๋ณด์•ˆ ๊ฒฝ๊ณ  ๋„๊ธฐ:

    • https://example.com/submit ์š”์ฒญ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์‚ฌ์šฉ์ž๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‘ ์˜ต์…˜ ๋ชจ๋‘ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์˜ต์…˜ 1์€ ์ž˜๋ชป๋œ ๊ฒฝ๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด ๋ชจ๋“ˆ ์‚ฌ์šฉ์˜ ๋ถ€์ž‘์šฉ์œผ๋กœ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ๋„๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋” ํ–‰๋ณตํ•˜๊ณ  ์•ˆ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

curl --insecure -o data https://10.0.0.1/get_data
curl --upload-file data https://example.com/submit

๋‚˜์—๊ฒŒ๋Š” Python ํ”Œ๋žซํผ์˜ ๊ตฌ์„ฑ์ด ์†์ƒ๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. InsecureRequestWarning ๋ฉ”์‹œ์ง€์— ๋งํฌ๋œ https://urllib3.readthedocs.org/en/latest/security.html ํŽ˜์ด์ง€๋Š” ์‹ค์ œ๋กœ ํ”Œ๋žซํผ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”์ฒญ์ด ๊ฒ€์ฆ์„ ์ƒ๋žต ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๊ฐ€์—†๋Š” ๊ฐ™์€ ๊ฒฝ๊ณ ๊ฐ€ ์•ˆ http URL ๋Œ€์‹ ์˜ https ๋ฅผ.

์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์š”์ฒญ์— ๋Œ€ํ•ด verify=False๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญํ•˜๋ฉด ๊ฒฝ๊ณ  ํ‘œ์‹œ ๊ฐ’์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

'์ด์šฉ์ž'๋Š” ๋ˆ„๊ตฌ์ž…๋‹ˆ๊นŒ? ๊ท€ํ•˜์˜ ๊ฒŒ์‹œ๋ฌผ์„ ํ†ตํ•ด ์ด ์งˆ๋ฌธ์ด ๊ณ„์† ์ œ ๋งˆ์Œ์— ๋– ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜๊ฐ€ ๋‘ ์ฒญ์ค‘์„ ํ˜ผ๋™ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ์ž‘์„ฑ์ž๊ฐ€ verify=False๋กœ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ(๋˜๋Š” ๋‚ด๊ฐ€ ์•…์˜์ ์œผ๋กœ) ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๋ถ€์ฃผ์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ์™€ ์ƒํ˜ธ ์šด์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๊ฒŒ ํ•˜์—ฌ ์ธ์ฆ์„œ ํ™•์ธ์„ ๋„๋Š” ๊ฒƒ์ด ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด _์•„๋‹ˆ๋‹ค_ ์‚ฌ์‹ค์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ธ์ฆ์„œ ํ™•์ธ์„ ๋•๋‹ˆ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ๋ฌด์˜์‹์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์žฅ์€ ๋‚˜๋ฅผ ๋‹นํ™ฉํ•˜๊ฒŒ ํ•œ๋‹ค. ๊ทธ๊ฒƒ์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด _๋ฌด์˜์‹์ ์œผ๋กœ_ ๋ณด์•ˆ๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ํ•  ๋•Œ ๊ฒฝ๊ณ ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋˜์ง€๋งŒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด _์•Œ๊ณ  ์žˆ๋Š”_ ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป๊ฒŒ๋“  ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์˜๋„์ ์œผ๋กœ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์š”์ฒญ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์˜์‹์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์–ด๋–ค ์‹์œผ๋กœ๋“  '๋” ์•ˆ์ „ํ•œ' ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธ์„ ํ•ด์ œํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ์ผญ๋‹ˆ๋‹ค.

์–ด๋–ค ์‚ฌ์šฉ์ž? ๋ชจ๋“ˆ ์ž‘์„ฑ์ž์™€ '์‚ฌ์šฉ์ž'๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฒฝ๊ณ ๋Š” ๋˜ํ•œ ํŠน์ • ์š”์ฒญ์˜ URL์„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋Š” ๊ฒฝ๊ณ  ์ŠคํŒธ์„ ์ƒ์„ฑํ•  ์œ„ํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ ์š”์ฒญ์˜ URL์„ ์–ธ๊ธ‰ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” '์ด ํŠน์ • ํ†ต์‹ ์ด ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค'๊ฐ€ ์•„๋‹ˆ๋ผ '์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์œ„ํ—˜์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค'๋ผ๊ณ  _ํ•œ๋ฒˆ_ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ณ„ URL์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋จธ์ง€๋Š” ๊ณ„์† ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” URL์— ์•ก์„ธ์Šคํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ๊ณต๊ธ‰์—…์ฒด _๊ฒฝ๊ณ _! ๋Œ€ํ™” ์ƒ์ž๋ฅผ ์ธ์‡„ํ•˜๊ณ  URL ํ‘œ์‹œ์ค„์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์ด _์ •ํ™•ํžˆ_ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์•„๋ฌด๊ฒƒ๋„ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š๊ณ  ๋‹จ์ง€ "์ด๋ด, ์ด๊ฑด ๋‚˜์˜๋‹ค!"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ € ๊ณต๊ธ‰์—…์ฒด์— ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • URL์— ๋Œ€ํ•œ ๋นจ๊ฐ„์ƒ‰ ๊ฒฝ๊ณ ๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฉฐ ๋ณด์•ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์–ด๋งˆ์–ด๋งˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ž„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋กœ ๋‚ด๋ถ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ํ˜ธ์ŠคํŠธ์™€๋„ ํ†ต์‹ ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์™ธ๋ถ€ ํ†ต์‹ ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, ํ†ต์‹ ์„ _๋ชจ๋‘_ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž์ฒด ์„œ๋ช… ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค! ์˜ˆ์ƒํ•œ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. verify=False ๋Š” ๋ณด์•ˆ์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ํšจ๊ณผ์ ์œผ๋กœ "๋ณด์•ˆ ๋‚˜์‚ฌ๋ฅผ ์กฐ์—ฌ ์ž‘๋™์‹œํ‚ค์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๋ ‡๊ฒŒ ๋งํ•  ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ถ€๋ฅผ ์˜๋ฌด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ์˜ต์…˜ ๋ชจ๋‘ ์ข‹์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์˜ต์…˜ 1์€ ์ž˜๋ชป๋œ ๊ฒฝ๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค.

์˜ต์…˜ 1์€ ์ž˜๋ชป๋œ ๊ฒฝ๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ๊ฒฝ๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 10.0.0.1์— ๋Œ€ํ•œ ํ†ต์‹ ์€ _insecure_์ด๋ฉฐ, ๋‹ค๋ฅธ ์ฒ™ ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

์‰˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋” ํ–‰๋ณตํ•˜๊ณ  ์•ˆ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ๋” ํ–‰๋ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ์•ˆ์ „ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์ „๋งŒํผ ์•ˆ์ „ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ๊ณ ๋ฅผ ๋„๋ฉด ๋งˆ์ˆ ์ฒ˜๋Ÿผ ์ธ์ฆ์„œ ํ™•์ธ์ด ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋‹ต๋ณ€์˜ ๋์—์„œ ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋Š” Python ํ”Œ๋žซํผ์˜ ๊ตฌ์„ฑ์ด ์†์ƒ๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, Python ํ”Œ๋žซํผ์˜ ๊ตฌ์„ฑ์ด ์†์ƒ๋˜๊ณ  ํ™•์ธ๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ์š”์ฒญํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์—ด์‹ฌํžˆ ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์ด ์•ˆ์ „ํ•œ TLS ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์‹ ๊ฒฝ์“ฐ์ง€ ๋ง๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ๋งํ•˜๋Š” ์ƒํ™ฉ( verify=False ์„ค์ •)์„ ์ œ์™ธํ•˜๊ณ  ์ ˆ๋Œ€ ์—ฐ๊ฒฐํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์˜คํ•ด ์†์—์„œ ์ผํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์•„์ฃผ ๋ถ„๋ช…ํžˆ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค: a) verify=False (์šฐ๋ฆฌ์˜ ๊ฒฝ๊ณ  ๋™์ž‘) ๋˜๋Š” b) ์˜๋„์ ์œผ๋กœ ssl ๋ชจ๋“ˆ์„ ๋ฐฉํ•ดํ•˜๋Š” ํ–‰์œ„. ์šฐ๋ฆฌ๋Š” b)๋ฅผ ์žก์„ ์ˆ˜ ์—†์œผ๋ฉฐ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ "ํ”Œ๋žซํผ ๋ฌธ์ œ"์— ๋Œ€ํ•ด ์ œ๊ธฐํ•œ ๊ฐœ๋…์— ํ•ด๋‹นํ•˜๋Š” ์œ ์ผํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. urllib3์˜ ๋„์›€๋ง ํŽ˜์ด์ง€์— ์žˆ๋Š” ์กฐ์–ธ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ ๋ฒˆ๋“ค๋ง ๋ฐ ์ธ์ฆ์„œ ์ˆ˜๋™ ํ™•์ธ์„ ํฌํ•จํ•˜์—ฌ ํ•„์š”ํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ ๊ด€๋ จ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›น ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํŠธ ์ธ์ฆ์„œ๋กœ ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋งŒ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋Š” ์œ„ํ—˜ํ•œ ๊ฒฌํ•ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฌํ•ด๋Š” ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ .pem ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๊ณ  verify ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜์‹ญ์‹œ์˜ค!

๋ฒˆ๋“ค๋œ .pem ํŒŒ์ผ๊ณผ ์ด๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ž์‹ ์˜ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํŠธ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก mkcert.org๋ฅผ ๊ฐœ์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ verify=False ์ด ์•ˆ์ „ํ•œ ์ฒ™ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™•์ธ์„ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•œ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๋ฅผ ์ผœ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ์›ํ•˜๋Š” ์š”์ฒญ๋„ ์ˆจ๊น๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ ์ข€ ์˜์™ธ๋„ค์š”. verify=False ํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ง€์  ์ด์ƒ์œผ๋กœ ์ด๋ฅผ ์ „๋‹ฌํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ธ์ฆ์„œ ํ™•์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ด์ƒ์„ ์ „๋‹ฌํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•œ ์ƒํ™ฉ์€ ๋‹น์‚ฌ ๋˜๋Š” ๊ท€ํ•˜์˜ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ € ๊ณต๊ธ‰์—…์ฒด์— ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • URL์— ๋Œ€ํ•œ ๋นจ๊ฐ„์ƒ‰ ๊ฒฝ๊ณ ๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฉฐ ๋ณด์•ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์–ด๋งˆ์–ด๋งˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ๊ฑฐ๋ถ€ํ•  ๊ฒƒ์ž„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "๋งค์šฐ ์•ˆ์ „ํ•˜์ง€ ์•Š์€" ํ™•์ธ๋˜์ง€ ์•Š์€ ์ธ์ฆ์„œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10.0.0.1์— ๋Œ€ํ•œ ํ†ต์‹ ์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ์ฒ™ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๋””์ง€ํ„ธ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์—์„œ ์—ฐ๊ฒฐ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š์ง€๋งŒ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•œ๋‹ค๊ณ  ํ•ด์„œ ํ˜„์žฌ ๋Œ€ํ™” ์ค‘์ธ ์„œ๋ฒ„๊ฐ€ ์•ˆ์ „ํ•œ์ง€ ์—ฌ๋ถ€๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ์‡„๋œ ๋„คํŠธ์›Œํฌ์˜ ์„œ๋ฒ„์™€ ๋Œ€ํ™”ํ•  ๋•Œ ์„œ๋ฒ„์˜ ๋ณด์•ˆ์„ ์‹ค์ œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์˜คํ•ด ์†์—์„œ ์ผํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๋งค์šฐ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค: a) verify=False(์šฐ๋ฆฌ์˜ ๊ฒฝ๊ณ  ๋™์ž‘)๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ b) ์˜๋„์ ์œผ๋กœ SSL ๋ฐฉํ•ด

๋‚˜๋Š” ๊ทธ๋“ค์ด ๋‚˜์—๊ฒŒ์ฃผ๋Š” URL์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ํ™•์ธ ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์˜ ํฌ๋ง์„ ์กด์ค‘ํ•จ์œผ๋กœ์จ ๋‚ด ๋ชจ๋“ˆ์—์„œ ์–ด๋–ป๊ฒŒ ํ›Œ๋ฅญํ•œ ์‹œ๋ฏผ์ด ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฝ๊ณ  ๋ชจ๋ธ์ด ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐ€์น˜. verify=False ๊ฐ€ ํฌํ•จ๋œ ์š”์ฒญ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฒฝ๊ณ  ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ถ€์ฃผ์˜ํ•œ ์ฝ”๋“œ๋ฅผ ํฌ์ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์กฐ์žกํ•ด์„œ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ธ์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ธ์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. requests ๊ฐ™์€ ๋ชจ๋“ˆ๋„ ๋ณด์•ˆ ์ •์ฑ…์„ ์ง€์‹œํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜์—ฌ ์ž˜๋ชป๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์ง€๋งŒ ์ด ๊ฒฝ๊ณ ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ผ๋ฐ˜ ๊ต์œก์„ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ˆจ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๊ด€์ƒ ๋ฟ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ์˜ ์Œ์ˆ˜ ๊ฐ’๋งŒ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ์ „์—ญ ์ •์ฑ… ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ˆจ๊ธฐ๊ณ  ์‹ถ์ง€ ์•Š๋”๋ผ๋„ ๋‚ด ๋ชจ๋“ˆ์—์„œ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋•๋‹ˆ๋‹ค.

์›น ์ปค๋ฎค๋‹ˆํ‹ฐ์—๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํŠธ ์ธ์ฆ์„œ๋กœ ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋งŒ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค๋Š” ์œ„ํ—˜ํ•œ ๊ฒฌํ•ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฌํ•ด๋Š” ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ทฐ๊ฐ€ ์žˆ๋Š”์ง€ ๋ชฐ๋ž๋„ค์š”. ๋ฃจํŠธ ์ธ์ฆ์„œ๋กœ ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋Š” ์‹ค์ œ๋กœ ์‚ฌ์ดํŠธ ๋ณด์•ˆ์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ์ฆ๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜์œ ์ผ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ต๋ช…์˜ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ด ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค.

์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์™„์ „ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ .pem ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜๊ณ  ํ™•์ธ์„ ์œ„ํ•œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜์‹ญ์‹œ์˜ค!

์‚ฌ์šฉ์ž๋Š” ๋‚ด๋ถ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ์™€ ๊ฐ™์ด ์ธ์ฆ์„œ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ณด์•ˆ ์ฑ„๋„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„ ์ž์ฒด๊ฐ€ ๋™์ผํ•œ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์— ์žˆ์œผ๋ฉด ์–ป๋Š” ๊ฒƒ์ด ๋ณ„๋กœ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‚ด ๋ชจ๋“ˆ์— ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋Œ€๋ถ€๋ถ„ @kankri ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์›๋ž˜ ๋””์ž์ธ ์˜๋„์˜€์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์ผœ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•˜๋Š” ์ž์ฒด ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์™ธ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•œ ๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. verify=False ๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ด€ํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

verify=False ๊ฐ€ ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€๋งŒ params= ๋˜๋Š” cert= ์™€ ๊ฐ™์€ ์ˆ˜์ค€์˜ ๊ธฐ๋Šฅ์ด๋ผ๋Š” ์ ์—๋Š” ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ฐ’์œผ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜๋ฉฐ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๊ฐ’์œผ๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋ณด์•ˆ์„ ์ฐฝ๋ฐ–์œผ๋กœ ๋‚ด๋˜์ ธ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์€ ๊ฑฐ๋Œ€ํ•˜๊ณ  ์œ ํ˜น์ ์ธ ์„ ํƒ์ด๋ฉฐ, ๋‚˜๋Š” ๊ทธ ์ถฉ๋™์„ ์–ต์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ํ—ˆ์šฉ๋˜์ง€๋Š” ์•Š์Œ). ๋‚˜๋Š” ํ•ญ์ƒ '๋‹น์‹ ์€ ๋ถ„๋ช…ํžˆ ๋ถˆ์•ˆํ•ดํ•ด์•ผ ํ•œ๋‹ค'๋Š” ํ•™ํŒŒ์— ๊ธฐ๋Œˆ ๊ฒƒ์ด๊ณ , ๊ทธ๊ฒƒ์ด ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ ๋‘ ๊ฐœ์˜ ์Šค์œ„์น˜๋ฅผ ์ผœ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์ด๊ฒƒ์€ ๋‚ด ์ „ํ™”๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹น์‹ ์˜ ์ „ํ™”์ž…๋‹ˆ๋‹ค. =)

@kankri ์™€ @kennethreitz ์˜ ๋ง์— ๋™์˜ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

verify=False๋Š” ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ด€ํ•  ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ž˜ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€์ธ warnings ๋ชจ๋“ˆ ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

import warnings
import requests
from requests.packages.urllib3 import exceptions

with warnings.catch_warnings():
    warnings.simplefilter("ignore", exceptions.InsecureRequestWarning)
    warnings.warn('a non-requests warning is not blocked')
    print requests.get('https://rsa-md5.ssl.hboeck.de/', verify=False)

์ด๊ฒƒ์€ InsecureRequestWarning ๋ฒ”์ฃผ์˜ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝ๊ณ  ํ•„ํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

test.py:46: UserWarning: a non-requests warning
  warnings.warn('a non-requests warning is not blocked')
<Response [403]>

(ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ๋Š” 403 Forbidden ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜๋Š” urllib3 ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ตœ์ƒ์œ„ urllib3 ํŒจํ‚ค์ง€์˜ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ์˜์—ญ์—์„œ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

def silent_unverified_get(*args, **kwargs):
    kwargs['verify'] = False
    with warnings.catch_warnings():
        warnings.simplefilter("ignore", exceptions.InsecureRequestWarning)
        return requests.get(*args, **kwargs)

๋˜๋Š” ๊ฐ„๋‹จํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค.

requests.packages.urllib3.disable_warnings()

@๋ฃจ์นด์‚ฌ

๋˜๋Š” ๊ฐ„๋‹จํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค.

requests.packages.urllib3.disable_warnings()

์š”์ฒญ ๋งค๋‰ด์–ผ์— ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์—†๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š”.

๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•„๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์ง€๋งŒ, ์ €๋Š” warnings ๋ชจ๋“ˆ์ด ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ดํŽด๋ด์•ผ ํ•˜๋Š” ํ‘œ์ค€ ๋„๊ตฌ๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ผ๋ถ€์ด๋ฉฐ ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

warnings ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ requests ๋ฌธ์„œ์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์›ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น enable_warnings ๊ฐ€ ์žˆ๋Š” ํ•œ ํŽธ๋ฆฌํ•œ disable_warnings ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ(์ด๋Ÿฐ ๊ธฐ๋Šฅ ์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ).

๋‹ค์‹œ ํ•œ ๋ฒˆ: ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ์—์„œ _๋ช…์‹œ์ ์œผ๋กœ_ verify=False๋ฅผ ์„ค์ •ํ•  ๋•Œ ์ด ํŠน์ • ๊ฒฝ๊ณ ๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠน๋ณ„ํ•œ ์“ธ๋ชจ์—†๋Š” ๊ฒฝ๊ณ ์™€ ๋‹ฌ๋ฆฌ ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๊ฒฝ๊ณ ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?!

@zaitcev ๋‚˜ ์ž์‹ ์„ ๋ฐ˜๋ณต ํ•  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

requests.packages.urllib3.disable_warnings()

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ๋„ˆ๋ฌด ๊ด‘๋ฒ”์œ„ํ•˜๋‹ค๋ฉด:

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

๋งˆ์ง€๋ง‰์œผ๋กœ, @zaitcev ๋ฉ”๋ชจ: ๋ฐฉ๊ธˆ ํ•œ ๋ถ„๋…ธํ•œ ์–ด์กฐ๋ฅผ ์ทจํ•˜๋Š” ๊ฒƒ์ด ์ „ํ˜€ ํ˜ธ์˜๋ฅผ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ์ž์› ๋ด‰์‚ฌ์ž์ด๋ฉฐ ๋‹น์‹ ์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ค„ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ์ œํ•œ๋˜์–ด ์žˆ์Œ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋‹น์‹ ์ด ๋Œ€์šฐ๋ฐ›๊ณ ์ž ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์šฐ๋ฆฌ๋ฅผ ๋Œ€์šฐํ•ด ์ฃผ์„ธ์š”.

@zaitcev ์ด๊ฒƒ์€ requests ๋ชจ๋“ˆ ์ž์ฒด์—์„œ ๋ณ€๊ฒฝ๋  ๊ฒƒ ๋‚ด ๋‹ค๋ฅธ ์ฃผ์„์— ๋„ฃ์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด urllib3์—์„œ ๋‚ด๋ณด๋‚ธ ๊ฒฝ๊ณ ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ต์ œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

with warnings.catch_warnings():
  warnings.filterwarnings("ignore", message=".*InsecurePlatformWarning.*")
  ...

์ œ ๊ฒฝ์šฐ์—๋Š” ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ์–ต์ œํ•˜๋ฉด ๋‚˜์ค‘์— ๊นจ์งˆ ๊ฑฑ์ •์„ ์กฐ๊ธˆ ๋œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@zaitcev ์ด์ „ ์ œ์•ˆ์„ ๋ชจ๋‘ ์ข…ํ•ฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

verify = False
if not verify:
    from requests.packages.urllib3.exceptions import InsecureRequestWarning
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
r = requests.get('https://www.example.com', verify=verify)

@utkonos ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ํ›„์† ์š”์ฒญ์— ๋Œ€ํ•ด ๊ฒฝ๊ณ ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์˜ˆ๋ฅผ ๋ชจ์•„์„œ ๊ธฐ๋ณธ Session ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค( requests.get ๋ฐ ๋‹ค๋ฅธ ๋‹จ์ถ•ํ‚ค๋Š” ์ž„์‹œ Session ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์–ด์จŒ๋“ ).

from requests.packages.urllib3 import exceptions

class Session(requests.sessions.Session):

    def request(self, *args, **kwargs):
        if not kwargs.get('verify', self.verify):
            with warnings.catch_warnings():
                warnings.simplefilter('ignore', exceptions.InsecurePlatformWarning)
                warnings.simplefilter('ignore', exceptions.InsecureRequestWarning)
                return super(Session, self).request(*args, **kwargs)
        else:
            return super(Session, self).request(*args, **kwargs)

requests ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

import warnings
with warnings.catch_warnings():
    warnings.simplefilter("error") 
    try:
        req = requests.get("https://an-insecure-server.com")
    except (RuntimeWarning, requests.exceptions.SSLError)::
        log.error("Making an insecure request")
        warnings.simplefilter("ignore")
        req = requests.get("https://an-insecure-server.com")

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์š”์ฒญ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜๊ณ , urllib ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊ธฐ๊ณ , ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋‚ด ์ž์‹ ์˜ ํ˜•์‹์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์ด ๋‘ ๋ฒˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. except ์ ˆ์ด ๋œ ๊ด‘๋ฒ”์œ„ํ•˜๋„๋ก ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

except Exception: ๋Š” ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ •๋ง๋กœ ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์€ ์ด ๋…ผ์˜์˜ ์–‘์ธก์— ๋Œ€ํ•œ ์šฐ๋ ค๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋Œ€์‹  ์žก์„ ์ˆ˜์žˆ๋Š” ์˜ˆ์™ธ์˜ ์ผ๋ถ€ ํ•˜์œ„ ํด๋ž˜์Šค๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋˜๋Š” logging.captureWarnings()

๋Œ€์•ˆ์€ urllib3์ด ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(tuukkamustonen์˜ ์ฃผ์„ ์ฐธ์กฐ). ์ด๊ฒƒ์ด ๋‚˜์˜ ์ฃผ๋œ ๋ฐ˜๋Œ€์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๊ณ , ์‹ฌ์ง€์–ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์—์„œ ํŒจ์น˜๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ€์ธํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ "์˜ˆ์™ธ ์ œ์™ธ" ๋˜๋Š” "์š”์ฒญ์—์„œ.ํŒจํ‚ค์ง€.urllib3 ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ˆ์™ธ"์™€ ๊ฐ™์€ ๋”์ฐํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ž์‹ ์ด ํ•ญ์ƒ ํ‹€๋ ธ์Œ์„ ์ธ์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๊ผผ์ง ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚˜์˜ ์ฃผ๋œ ๋ฐ˜๋Œ€์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๊ณ , ์‹ฌ์ง€์–ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์—์„œ ํŒจ์น˜๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ€์ธํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ "์˜ˆ์™ธ ์ œ์™ธ" ๋˜๋Š” "์š”์ฒญ์—์„œ.ํŒจํ‚ค์ง€.urllib3 ๊ฐ€์ ธ์˜ค๊ธฐ ์˜ˆ์™ธ"์™€ ๊ฐ™์€ ๋”์ฐํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ž์‹ ์ด ํ•ญ์ƒ ํ‹€๋ ธ์Œ์„ ์ธ์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” ๊ผผ์ง ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@zaitcev ๋‹ค์‹œ ํ•œ ๋ฒˆ, ์ด ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์ตœ์„ ์„ ๋‹คํ•˜๋Š” ์ž์› ๋ด‰์‚ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์ž„์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ† ๋ก ์„ ์œ„ํ•ด ๋ฌด๋ฃŒ๋กœ ๋‚จ๊ฒจ๋‘์—ˆ๊ณ  ๊ทธ๊ฒƒ์„ ์ž ๊ทธ๊ฑฐ๋‚˜ ๋” ์ด์ƒ์˜ ํ† ๋ก ์„ ๋ฐฉ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” _๊ท€ ๊ธฐ์šธ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค_. ์šฐ๋ฆฌ๊ฐ€ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ํ‰๊ฐ€์— ์ฆ‰์‹œ ๋™์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ท€ํ•˜์˜ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ์š”๊ตฌ ์‚ฌํ•ญ์˜ ๊ท ํ˜•์„ ๋งž์ถฐ์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๋‹น์‹ ์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋Š” ๋‹น์‹ ์ด ์ง€์†์ ์œผ๋กœ ๋ฌด์‹œํ•˜๊ณ  ์žˆ๋Š” _๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ์ด์œ _๋กœ ์ธํ•ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋ฅผ ๋ณด์ž ์ž์‹ ์ด ์ธ์šฉ ์ธ์šฉ ์ด์•ˆ :

๋งˆ๋ฌด๋ฆฌ ์ง„์ˆ ์€ "์ด๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„ urllib3์— ์žˆ๊ณ  ๊ฑฐ๊ธฐ์—์„œ ์Šน์ธ์— ์˜์กดํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ง„ํ–‰์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์„ ๋‹ซ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. "(๊ฐ•์กฐ ๋‚ด)์˜€์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ํ˜„์žฌ๊นŒ์ง€ urllib3์—์„œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ด€๋ จ pull ์š”์ฒญ์ด๋‚˜ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ๋ˆ„๊ตฌ๋„ ๋ฐฉํ•ดํ•˜๊ฑฐ๋‚˜ ์ด ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. _ํ˜„์žฌ ๊ท€ํ•˜์™€ ๋™์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ํ•˜๊ธฐ๋กœ ์„ ํƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ํ† ๋ผ๊ตด์— ๋‹ค์‹œ ๋น ์งˆ ์œ„ํ—˜์„ ๋ฌด๋ฆ…์“ฐ๊ณ  ๋‹ค์‹œ ๋งํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋‚˜์˜ ์ฃผ๋œ ๋ฐ˜๋Œ€์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ํŒจ์น˜๊ฐ€ ์ด ์ž‘์—…์„ "์˜ฌ๋ฐ”๋ฅธ" ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค . ์ด ์Šค๋ ˆ๋“œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋งํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๋™์ž‘์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜์ง€ ์•Š์€ TLS ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ด๋ฉฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œ ์ž…์žฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํŠนํžˆ ์ž์‹ ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ ์ ˆํ•˜๊ฒŒ ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š” TLS ์š”์ฒญ์„ ํ•  ๋•Œ _์•Œ ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค_ ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ ์—๋Š” ์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ ์ˆ˜์ค€ ํ›„ํฌ๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๋Š” verify=False ์™€ verify=None ์‚ฌ์ด์— ์ด์ „์— ์กด์žฌํ•˜์ง€ ์•Š์•˜๋˜ ๊ตฌ๋ณ„์„ ์ถ”๊ฐ€ํ•ด์•ผ ์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ฌต์‹œ์ ์œผ๋กœ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๊ฐ€ ํ›„์ž๋ณด๋‹ค ํ›จ์”ฌ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

verify=False์™€ verify=None์„ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด +1์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€(์˜ˆ: noInsecureWarnings), ๋˜๋Š”
  • ์š”์ฒญ์ด ์žˆ์œผ๋ฉด urllib3 ๊ฒฝ๊ณ ๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ์ž์ฒด ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•˜๋ฏ€๋กœ (a) 'requests.packages.urllib3.exceptions.InsecureRequestWarning'๋ณด๋‹ค ๋œ ๋ฌด์„œ์šด ๊ฒƒ์„ ์–ต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์–ด์จŒ๋“  ์ด๋ฏธ ์š”์ฒญ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์š”์ฒญ์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋˜๋ฉด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. (b) ๊ฒฝ๊ณ ๋Š” ์š”์ฒญ๋ณ„ URL์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฒฝ๊ณ ๊ฐ€ ์Œ์˜ ์ฒ˜๋ฆฌ๋˜์—ˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ URL์€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค!)

๊ทธ๋ฆฌ๊ณ  ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์š”์ฒญ์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์ž์› ๋ด‰์‚ฌ์ž์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ›Œ๋ฅญํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. :)

์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๊ณ ์— ๊ฐ์‚ฌํ•˜๋Š” ๋ฉ‹์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์ƒˆ๋กœ์šด InsecurePlatformWarning ์ถœ๋ ฅ๋ฌผ์„ ๋ฐœ๊ฒฌํ•œ ํ›„ ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ œ ์œ ์Šค ์ผ€์ด์Šค์— ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์ด๋Š” ์„ค๋“๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

4๊ฐ€์ง€ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์  ํ‚จ์Šค ์„œ๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์š”์ฒญ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์„ธ ๊ฐ€์ง€ ํ™˜๊ฒฝ(๊ฐœ๋ฐœ, ์Šคํ…Œ์ด์ง•, ํ”„๋กœ๋•์…˜)์—๋Š” ๋ชจ๋‘ ์œ ํšจํ•œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ํ™˜๊ฒฝ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋กœ์ปฌ ์‹œ์Šคํ…œ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ž‘ ๊ฐ€์ƒ ์ƒ์ž์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ธ์ฆ์„œ๊ฐ€ ์—†์ง€๋งŒ ์ •์ฑ…์— ๋”ฐ๋ผ ๋ชจ๋“  ์„œ๋ฒ„ ๊ตฌ์„ฑ์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ์— ๋Œ€ํ•œ jenkins ์—ฐ๊ฒฐ ์„ค์ •(์„œ๋ฒ„ ์ด๋ฆ„, ํ† ํฐ ๋“ฑ)์—๋Š” vagrant ํ™˜๊ฒฝ์— ๋Œ€ํ•ด์„œ๋งŒ True๋กœ ์„ค์ •๋˜๋Š” SSL ํ™•์ธ์„ ๋„๊ธฐ ์œ„ํ•œ ํŠน์ • ํ”Œ๋ž˜๊ทธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ์„ค์ •์—์„œ ๊ฒฝ๊ณ ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค์†Œ ํฌ๊ณ  ์š”์ฒญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋“  ์—†๋“  ๋งŽ์€ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ์ผ๋ถ€์— ํ”Œ๋ผ์Šคํฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๊ธฐํƒ€ ๊ฐ€๋Šฅํ•œ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ  ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” verify=False ์‚ฌ์šฉ์ด ์ง€์›๋˜๊ณ  ๊ฒฝ๊ณ  ์—†์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•˜๋Š” ์‹œ๊ธฐ์™€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋นจ๊ฐ„์ƒ‰ ํ…์ŠคํŠธ๊ฐ€ ๋งŽ์€ ํฐ ํ™•์ธ ๋Œ€ํ™” ์ƒ์ž๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ ๋Š” ์ด๊ฒƒ์„ True๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๊ณ  ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š๊ณ  ๊นจ๋—ํ•œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•˜๋Š” ์‹œ๊ธฐ์™€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋…ผ์Ÿ์€ ๋‚ด๊ฐ€ ๋‹น์‹ ๊ณผ ๋‹ค๋ฅธ ์ ์ž…๋‹ˆ๋‹ค. ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์„ ํƒ์ด ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ _user_์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ฐœ์ž์˜ ์„ ํƒ์œผ๋กœ ์ธํ•ด ์œ„ํ—˜์— ์ฒ˜ํ•  ๋•Œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ•ด๋‹น ์œ„ํ—˜์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ _์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค_.

ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๊ณ  ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š๊ณ  ๊นจ๋—ํ•œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊น… ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๊ณ ๋ฅผ ์บก์ฒ˜ํ•˜๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์š”์ฒญ์—์„œ ์ด ๊ฒฝ๊ณ ๋ฅผ ์š”์ฒญ์— ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ง€์ •ํ•˜์—ฌ ์บก์ฒ˜ํ•˜๊ธฐ ๋” ์‰ฝ๋„๋ก ํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์ง€๋งŒ ์•„์ง ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@jamie-sparked์™€ ๋น„์Šทํ•œ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณด์•ˆ ๊ฐ•ํ™”์— ๋Œ€ํ•œ Lukasa์˜ ์š”์ ์„ ์ดํ•ดํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์„ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์š”์ฒญ์€ ์ตœ์ข… ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. IMO์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์‚ฌ์šฉ์ž๋กœ ๊ฐ„์ฃผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š” ์ธ์ฆ์„œ ํ™•์ธ์„ ๋„๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒฝ์šฐ ๋ณด์•ˆ ์‹ค์ˆ˜์— ๋Œ€ํ•ด ์ฑ…์ž„์„ ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: verify=False).

๊ฐœ๋ฐœ์ž๋กœ์„œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์„ ์ง€์‹œํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ์œ ์—ฐ์„ฑ์„ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด BTW๋Š” ์š”์ฒญ์„ _ํ›Œ๋ฅญํ•˜๊ฒŒ ์ฐพ์•˜์œผ๋ฉฐ ๊ท€ํ•˜์˜ ๋ชจ๋“  ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

@thalesac ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฒฐ์ •ํ•˜๋„๋ก _do_ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ _์—ฌ๋Ÿฌ_๋ฒˆ ๋…ผ์˜ํ–ˆ๋“ฏ์ด ์ด ๊ฒฝ๊ณ ๋ฅผ ๋„๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ๋„๋Š” ์Šค์œ„์น˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ _์˜์‹์ ์œผ๋กœ_ ๊ฐ ์•ˆ์ „ ์žฅ์น˜๋ฅผ ์ œ๊ฑฐํ•˜๋„๋ก ํ•˜๋ ค๋Š” ์‹œ๋„์ž…๋‹ˆ๋‹ค.

์‹ฌ์ธต ๋ฐฉ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด์•Œ์„ ๋น„์œ ํ•˜์ž๋ฉด ์•ˆ์ „์žฅ์น˜๊ฐ€ ์žˆ๊ณ  ์ด์•Œ์ด ๋“ค์–ด ์žˆ์ง€ ์•Š์€ ์ด๊ณผ ํƒ„์ฐฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. verify=False ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ํ–ˆ๋‹ค๋ฉด ํƒ„์ฐฝ์ด ์‚ฝ์ž…๋  ๋•Œ ์ž๋™์œผ๋กœ ์•ˆ์ „ ์žฅ์น˜๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ด์•Œ์„ ๋ฐœ์‚ฌํ•˜๋Š” ์ด์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŽธ๋ฆฌํ•œ? ํ™•์‹ ํ•˜๋Š”. ์œ„ํ—˜ํ•œ? ๋ฌผ๋ก ์ด์ง€.

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ๋‚˜๋Š” ๋‹น์‹ ์˜ ์œ ์ถ” ๋ชจ๋ธ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” verify=False๊ฐ€ ๋‹น์‹ ์˜ ์•ˆ์ „/๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์œผ๋กœ(๋˜๋Š” ์ˆ˜๋™์œผ๋กœ) ๋น„ํ™œ์„ฑํ™”ํ•œ ๊ฒฝ์šฐ ๋‚˜์œ ๋†ˆ๋“ค์„ ์  ๋•Œ ์ด์ด ํ•ญ์ƒ ๊ฒฝ๊ณ ํ•˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ๊ธฐ๋ณธ ๋™์ž‘์€ ๋ณด์•ˆ ์‚ฌ๊ณ ๋ฅผ ๊ฐ•์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์–ด์จŒ๋“ , ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹จ์ง€ ๋‚˜์˜ ๊ฒฌํ•ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  ๋‹น์‹ ์€ ๋‹น์‹ ์ด ํ”„๋กœ์ ํŠธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์ด ์ข‹์€ ๋„์„œ๊ด€์ธ ์ด์œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)
๊ฐ์‚ฌ ํ•ด์š”

๋‚˜๋Š” Lukasa, ๋ณด์•ˆ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ฝ”๋“œ์˜ ํ•œ ๋ถ€๋ถ„์—์„œ verify=False๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ํŒ€ ์ž‘์—…์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ด๋ ฌํ•œ ํŒฌ์ž…๋‹ˆ๋‹ค. ๊ณ„์†ํ•ด์„œ ์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ์šฐ๋ฆฌ์—๊ฒŒ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก +10000์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณผ ๋•Œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ URL์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ต์…˜์ด ์ œ๊ณต๋˜์–ด์•ผ ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์„œ ์œ ํšจํ•œ ์ธ์ฆ์„œ๊ฐ€ ์—†์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” URL(์ธ์ฆ์„œ, ํ…Œ์ŠคํŠธ ๋“ฑ์˜ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค)์— ์—ฐ๊ฒฐํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ ๋น„ํ™œ์„ฑํ™”์™€ ํ•จ๊ป˜ ๊ฒฝ๊ณ .

๋™์‹œ์— ์กฐ์šฉํžˆ ๋ฌด์‹œ๋˜๋Š” ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ์‰ฝ๊ฒŒ ์—ด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•œ ๋ฒˆ์— ์ „์—ญ์ ์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

requests.packages.urllib3.disable_warnings() ์˜ˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”

requests.packages.urllib3.disable_warnings() ๊ฐ€) ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ๊ฒฝ๊ณ ๋ฅผ ์นจ๋ฌต์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์—์„œ ๊ฒฝ๊ณ  ๋น„ํ™œ์„ฑํ™” ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ฒฝ๊ณ  ๊ธฐ๋Šฅ์ด ํ˜ธ์ถœ๋˜๋Š” ์—ญ์ถ”์ ์˜ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 [+] https://drupal.org/๋กœ ๋ฆฌ๋””๋ ‰์…˜ ํ—ˆ์šฉ
 > /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py(791)_validate_conn()
 -> warnings.warn((
 (Pdb) bt
 /root/droopescan/droopescan(5)()
 -> droopescan.main()
 /root/droopescan/dscan/droopescan.py(55)main()
 -> ds.run()
 /usr/local/lib/python2.7/dist-packages/cement/core/foundation.py(764)run()
 -> self.controller._dispatch()
 /usr/local/lib/python2.7/dist-packages/cement/core/controller.py(466)_dispatch()
 -> ๋ฐ˜ํ™˜ ํ•จ์ˆ˜()
 /usr/local/lib/python2.7/dist-packages/cement/core/controller.py(472)_dispatch()
 -> ๋ฐ˜ํ™˜ ํ•จ์ˆ˜()
 /root/droopescan/dscan/plugins/internal/scan.py(114)default()
 -> ํŒ”๋กœ์šฐ_๋ฆฌ๋””๋ ‰์…˜)
 /root/droopescan/dscan/plugins/internal/scan.py(230)_process_cms_identify()
 -> inst.cms_identify(url, opts['timeout'], self._generate_headers(host_header)) == True์ธ ๊ฒฝ์šฐ:
 /root/droopescan/dscan/plugins/internal/base_plugin_internal.py(910)cms_identify()
 -> ํ—ค๋”)
 /root/droopescan/dscan/plugins/internal/base_plugin_internal.py(827)enumerate_file_hash()
 -> r = self.session.get(url + file_url, timeout=timeout, headers=headers)
 /usr/lib/python2.7/dist-packages/requests/sessions.py(480)get()
 -> self.request ๋ฐ˜ํ™˜('GET', url, **kwargs)
 /usr/lib/python2.7/dist-packages/requests/sessions.py(468)request()
 -> resp = self.send(prep, **send_kwargs)
 /usr/lib/python2.7/dist-packages/requests/sessions.py(576)send()
 -> r = adapter.send(์š”์ฒญ, **kwargs)
 /usr/lib/python2.7/dist-packages/requests/adapters.py(376)send()
 -> ์‹œ๊ฐ„ ์ดˆ๊ณผ = ์‹œ๊ฐ„ ์ดˆ๊ณผ
 /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py(559)urlopen()
 -> ๋ณธ๋ฌธ=๋ณธ๋ฌธ, ํ—ค๋”=ํ—ค๋”)
 /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py(345)_make_request()
 -> self._validate_conn(conn)
 > /usr/lib/python2.7/dist-packages/urllib3/connectionpool.py(791)_validate_conn()
 -> warnings.warn((

๋‹ค์Œ์€ pip freeze ์˜ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๋ฐ๋น„์•ˆ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 argparse==1.2.1
 ์•„๋ฆ„๋‹ค์šด ์ˆ˜ํ”„4==4.4.1
 ์‹œ๋ฉ˜ํŠธ==2.6.2
 ์ƒค๋ฅด๋ฐ==2.3.0
 ์ปฌ๋Ÿฌ๋ผ๋งˆ==0.3.3
 ์ ์šฉ ๋ฒ”์œ„==4.0.3
 ์•”ํ˜ธํ™”==1.2.1
 distlib==0.2.1
 -e [email protected]:droope/droopescan.git@6524a9235e89a6fdb3ef304ee8dc4cb73eca0386#egg=droopescan-development
 enum34==1.1.2
 ๊ธฐ๋Šฅ์‹==0.4
 ์„ ๋ฌผ==3.0.4
 html5lib==0.999
 httplib2==0.9.1
 ์•„์ด๋””==2.0
 IP ์ฃผ์†Œ==1.0.16
 lxml==3.5.0
 ์ˆ˜์€==3.5.2
 ๋ชจ์˜==1.3.0
 ndg-httpsclient==0.4.0
 ์ฝ”==1.3.7
 pbr==1.8.1
 pyOpenSSL==0.15.1
 pyasn1==0.1.9
 ํŒŒ์ด์ปฌ==7.21.5
 ํŒŒ์ด์Šคํƒ€์น˜==0.5.4
 ํŒŒ์ด์ฌ-apt==1.1.0b1
 ํŒŒ์ด์ฌ ๋ฐ๋น„์•ˆ==0.1.27
 ํŒŒ์ด์ฌ-debianbts==2.6.0
 ๋ฒ„๊ทธ ๋ณด๊ณ ==6.6.6
 ์š”์ฒญ==2.9.1
 ์‘๋‹ต==0.3.0
 ์žฌ์‹œ๋„==1.3.3
 6==1.10.0
 urllib3==1.13.1
 ํœ ==0.26.0
 wsgiref==0.1.2

๊ฐ์‚ฌ ํ•ด์š”,
ํŽ˜๋“œ๋กœ

disable_warnings ๊ฒฝ๊ณ  ๊ธฐ๋Šฅ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅ์„ ์–ต์ œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ฝ”๋“œ ๋น„ํŠธ๊ฐ€ ๋ชจ๋“  ๊ฒฝ๊ณ ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @Lukasa ,

if ๋’ค์— ์ค‘๋‹จ์ ์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜์—ฌ ๋ฐ๋น„์•ˆ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๊ทธ ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์˜๊ฒฌ์„ ๋ฌด์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ์ค„ ์ผ์€ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!
ํŽ˜๋“œ๋ฅด

์˜ˆ, ๋”ฐ๋ผ์„œ ๋ฐ๋น„์•ˆ์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŒ๋งคํ•˜์ง€ ์•Š๋Š” ๋…ผ๋ฆฌ๋กœ ์ธํ•ด ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

verify=False ์„ ์ง€์ •ํ•˜์—ฌ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์š”์ฒญ์„ ํ•˜๊ณ  ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ด๋ฃจ์–ด์ง„ ๋‹ค๋ฅธ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

from requests.packages.urllib3.exceptions import InsecureRequestWarning

...
with warnings.catch_warnings():
    warnings.filterwarnings("ignore", category=InsecureRequestWarning)
    resp = requests.get(url, verify=False)  # InsecureRequestWarning suppressed for this request

resp = requests.get(url, verify=False)  # InsecureRequestWarning not suppressed for this request
...
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰