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()
๋ ์ค์ ํ๋ ๊ฒ์ด ์ ์ฉํ ๊น์?
๋๋ ์ด๊ฒ์ด ๋ชจ๋ ์ฌ๋์ด ๋์ํ์ง ์์ ์ ์๋ ๋์์ธ ๊ฒฐ์ ์ด๋ผ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. :)
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๊ฐ์ง ์ต์
์ด ์์ต๋๋ค.
https://10.0.0.1
๋ํํ ๋ ์ฌ์ฉ์๋ ํญ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค.https://example.com/submit
์์ฒญ์ด ์์ ํ์ง ์๋๋ผ๋ ์ฌ์ฉ์๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ง ์์ต๋๋ค.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์ ๋๋ค. ๋๋ ๋ค์ ์ค ํ๋๋ฅผ ์ง์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์์ฒญ์ ์ง์ํ๋ ๋ชจ๋ ์์ ๋ด์ฌ์์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ๋ฅญํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. :)
์ฌ๋ฌ๋ถ์ ๋ ธ๊ณ ์ ๊ฐ์ฌํ๋ ๋ฉ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
์ต๊ทผ์ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ณ ์๋ก์ด 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
...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ฐ๋จํ ๋ค์๊ณผ ๊ฐ์ด ํ์ญ์์ค.