Requests: HTTPoxy migitation

에 λ§Œλ“  2016λ…„ 07μ›” 18일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: psf/requests

https://httpoxy.org/

Proxy 헀더λ₯Ό μ „λ‹¬ν•˜μ—¬ CGI μŠ€ν¬λ¦½νŠΈμ—μ„œ HTTP_PROXY λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν¬λ¦½νŠΈκ°€ μš”μ²­μ„ μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•˜λŠ” 경우 μš”μ²­μ€ κ³΅κ²©μžκ°€ μ œκ³΅ν•œ ν”„λ‘μ‹œλ₯Ό μ‚¬μš©ν•˜μ—¬ μš”μ²­μ„ λ§Œλ“­λ‹ˆλ‹€.

이것은 Perl(2001λ…„ 이후), Ruby 및 curlκ³Ό 같은 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œμ™€ 같이 μ™„ν™”λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

HTTP_PROXY (λŒ€λ¬Έμž)와 기쑴의 μ†Œλ¬Έμž http_proxy (μš”μ²­ 2.7.0)이 λͺ¨λ‘ ν—ˆμš©λ˜λŠ” 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μš°λ¦¬λŠ” IRCμ—μ„œ 이에 λŒ€ν•΄ 길게 λ…Όμ˜ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” λ³΅μž‘ν•œ 의견이 μžˆμ§€λ§Œ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. 일반적으둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν™˜κ²½μ— λŒ€ν•œ μ“°κΈ°λ₯Ό ν—ˆμš©ν•˜λŠ” μœ„μΉ˜μ—μ„œ μš”μ²­ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 ν™˜κ²½μ— λŒ€ν•œ μš”μ²­μ˜ 검색을 λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이에 λŒ€ν•œ ν”Œλž˜κ·Έκ°€ μžˆμŠ΅λ‹ˆλ‹€: Session.trust_env . False 둜 μ„€μ •ν•˜λ©΄ 이 μœ„ν—˜μ΄ μ™„μ „νžˆ μ™„ν™”λ©λ‹ˆλ‹€.
  2. CGIλŠ” Python μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ _맀우_ ν”ν•˜μ§€ μ•Šμ€ λͺ¨λ“œμž…λ‹ˆλ‹€. 그것은 λ†€λΌμšΈ μ •λ„λ‘œ λΉ„νš¨μœ¨μ μ΄λ©° λ‚΄κ°€ μ•„λŠ” ν•œ 본질적으둜 이λ₯Ό μ‚¬μš©ν•˜μ—¬ 개발된 Python μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ—†μŠ΅λ‹ˆλ‹€.
  3. ν”„λ‘μ‹œ 검색은 μ‹€μ œλ‘œ Python ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€. 이것은 더 효율적인 μˆ˜μ •μ΄ Python ν‘œμ€€ 라이브러리 μžμ²΄μ— μžˆμŒμ„ μ˜λ―Έν•˜λ©°, μ΄λŠ” μš”μ²­λΏλ§Œ μ•„λ‹ˆλΌ Python ν‘œμ€€ 라이브러리의 λ‹€λ₯Έ λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 문제λ₯Ό μ™„ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

trust_env=True λ₯Ό μ‚¬μš©ν•˜μ—¬ CGI ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μš”μ²­μ„ μ‹€ν–‰ν•  λ•Œ κ²½κ³ λ₯Ό λ°œμƒμ‹œν‚¬ κ°€λŠ₯성을 기꺼이 κ³ λ €ν•  의ν–₯이 있으며 trust_env λ₯Ό False 둜 κ°•μ œν•  κ°€λŠ₯성도 κ³ λ €ν•  μš©μ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ—μ„œ, κ·ΈλŸ¬λ‚˜ ν˜„μ‹€μ μœΌλ‘œ 파이썬 μ½”λ“œμ˜ 경우 이에 λŒ€ν•œ μ˜¬λ°”λ₯Έ 해결책은 λ‹¨μˆœνžˆ _CGI λ‚΄μ—μ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  4 λŒ“κΈ€

μš°λ¦¬λŠ” IRCμ—μ„œ 이에 λŒ€ν•΄ 길게 λ…Όμ˜ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” λ³΅μž‘ν•œ 의견이 μžˆμ§€λ§Œ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. 일반적으둜 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν™˜κ²½μ— λŒ€ν•œ μ“°κΈ°λ₯Ό ν—ˆμš©ν•˜λŠ” μœ„μΉ˜μ—μ„œ μš”μ²­ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 ν™˜κ²½μ— λŒ€ν•œ μš”μ²­μ˜ 검색을 λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이에 λŒ€ν•œ ν”Œλž˜κ·Έκ°€ μžˆμŠ΅λ‹ˆλ‹€: Session.trust_env . False 둜 μ„€μ •ν•˜λ©΄ 이 μœ„ν—˜μ΄ μ™„μ „νžˆ μ™„ν™”λ©λ‹ˆλ‹€.
  2. CGIλŠ” Python μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ _맀우_ ν”ν•˜μ§€ μ•Šμ€ λͺ¨λ“œμž…λ‹ˆλ‹€. 그것은 λ†€λΌμšΈ μ •λ„λ‘œ λΉ„νš¨μœ¨μ μ΄λ©° λ‚΄κ°€ μ•„λŠ” ν•œ 본질적으둜 이λ₯Ό μ‚¬μš©ν•˜μ—¬ 개발된 Python μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ—†μŠ΅λ‹ˆλ‹€.
  3. ν”„λ‘μ‹œ 검색은 μ‹€μ œλ‘œ Python ν‘œμ€€ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€. 이것은 더 효율적인 μˆ˜μ •μ΄ Python ν‘œμ€€ 라이브러리 μžμ²΄μ— μžˆμŒμ„ μ˜λ―Έν•˜λ©°, μ΄λŠ” μš”μ²­λΏλ§Œ μ•„λ‹ˆλΌ Python ν‘œμ€€ 라이브러리의 λ‹€λ₯Έ λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 문제λ₯Ό μ™„ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

trust_env=True λ₯Ό μ‚¬μš©ν•˜μ—¬ CGI ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μš”μ²­μ„ μ‹€ν–‰ν•  λ•Œ κ²½κ³ λ₯Ό λ°œμƒμ‹œν‚¬ κ°€λŠ₯성을 기꺼이 κ³ λ €ν•  의ν–₯이 있으며 trust_env λ₯Ό False 둜 κ°•μ œν•  κ°€λŠ₯성도 κ³ λ €ν•  μš©μ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μƒν™©μ—μ„œ, κ·ΈλŸ¬λ‚˜ ν˜„μ‹€μ μœΌλ‘œ 파이썬 μ½”λ“œμ˜ 경우 이에 λŒ€ν•œ μ˜¬λ°”λ₯Έ 해결책은 λ‹¨μˆœνžˆ _CGI λ‚΄μ—μ„œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚˜μ—κ²Œ μ˜λ―Έκ°€μžˆλ‹€. CGI μ»¨ν…μŠ€νŠΈμ—μ„œ HTTP_PROXY(λŒ€λ¬Έμž)λ₯Ό ν”Όν•˜λŠ” 것은 μ•„λ§ˆλ„ 쒋은 쑰치일 수 μžˆμ§€λ§Œ μš”μ²­μ΄ 직접 μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” 경우 적극적인 쑰치λ₯Ό μ·¨ν•˜λŠ” 것이 μ˜λ―Έκ°€ 없을 κ²ƒμž…λ‹ˆλ‹€. λ‚˜ μžμ‹ μ€ wgi만 μ‚¬μš©ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것을 λ‹«κ³  계속할 것이닀.

@remram44 κ·Έλ§Œν•œ κ°€μΉ˜κ°€ 있기 λ•Œλ¬Έμ— stdlib의 urllib.request λͺ¨λ“ˆμ˜ getproxies λ©”μ„œλ“œμ— λŒ€ν•œ 패치λ₯Ό _μ‹¬μ‹¬νžˆ_ μ§€μ›ν•˜μ—¬ μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ 검사λ₯Ό κ΅¬ν˜„ν•©λ‹ˆλ‹€. 패치λ₯Ό μ μš©ν•˜κΈ°μ— 훨씬 더 생산적인 μž₯μ†ŒμΈ 것 κ°™μŠ΅λ‹ˆλ‹€. =) 이에 λŒ€ν•œ 버그 λ³΄κ³ μ„œλ₯Ό μ—΄κ³  μ‹Άλ‹€λ©΄ 기꺼이 μ°Έμ—¬ν•˜κ² μŠ΅λ‹ˆλ‹€. 패치λ₯Ό 직접 μž‘μ„±ν•˜κΈ° μœ„ν•΄ μžμ›ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€!

λ‚˜λŠ” cpython-27568 을 μ œμΆœν–ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰