복붙노트

[PYTHON] 파이썬 HTTP 연결에 인증 된 프록시를 지정하는 방법은 무엇입니까?

PYTHON

파이썬 HTTP 연결에 인증 된 프록시를 지정하는 방법은 무엇입니까?

파이썬에서 http 연결을 위해 사용자 이름과 암호로 프록시를 지정하는 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.이것을 사용하십시오 :

    이것을 사용하십시오 :

    import requests
    
    proxies = {"http":"http://username:password@proxy_ip:proxy_port"}
    
    r = requests.get("http://www.example.com/", proxies=proxies)
    
    print(r.content)
    

    urllib를 사용하는 것보다 훨씬 간단하다고 생각합니다. 나는 왜 사람들이 urllib을 그렇게 많이 사용하는 것을 좋아하는지 이해하지 못한다.

  2. ==============================

    2.이것은 나를 위해 작동합니다 :

    이것은 나를 위해 작동합니다 :

    import urllib2
    
    proxy = urllib2.ProxyHandler({'http': 'http://
    username:password@proxyurl:proxyport'})
    auth = urllib2.HTTPBasicAuthHandler()
    opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
    urllib2.install_opener(opener)
    
    conn = urllib2.urlopen('http://python.org')
    return_str = conn.read()
    
  3. ==============================

    3.다음과 같이 http_proxy라는 환경 변수를 설정합니다. http : // username : password @ proxy_url : port

    다음과 같이 http_proxy라는 환경 변수를 설정합니다. http : // username : password @ proxy_url : port

  4. ==============================

    4.인증이 필요한 프록시를 통과하는 가장 좋은 방법은 urllib2를 사용하여 사용자 정의 URL 열기 도구를 작성한 다음이를 사용하여 프록시를 통과하려는 모든 요청을 작성하는 것입니다. 특히, url이나 python 소스 코드에 프록시 암호를 포함하고 싶지는 않습니다 (빠른 해킹이 아니라면).

    인증이 필요한 프록시를 통과하는 가장 좋은 방법은 urllib2를 사용하여 사용자 정의 URL 열기 도구를 작성한 다음이를 사용하여 프록시를 통과하려는 모든 요청을 작성하는 것입니다. 특히, url이나 python 소스 코드에 프록시 암호를 포함하고 싶지는 않습니다 (빠른 해킹이 아니라면).

    import urllib2
    
    def get_proxy_opener(proxyurl, proxyuser, proxypass, proxyscheme="http"):
        password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
        password_mgr.add_password(None, proxyurl, proxyuser, proxypass)
    
        proxy_handler = urllib2.ProxyHandler({proxyscheme: proxyurl})
        proxy_auth_handler = urllib2.ProxyBasicAuthHandler(password_mgr)
    
        return urllib2.build_opener(proxy_handler, proxy_auth_handler)
    
    if __name__ == "__main__":
        import sys
        if len(sys.argv) > 4:
            url_opener = get_proxy_opener(*sys.argv[1:4])
            for url in sys.argv[4:]:
                print url_opener.open(url).headers
        else:
            print "Usage:", sys.argv[0], "proxy user pass fetchurls..."
    

    보다 복잡한 프로그램에서는 이러한 구성 요소를 적절하게 분리 할 수 ​​있습니다 (예 : 응용 프로그램의 수명 동안 하나의 암호 관리자 만 사용). 파이썬 문서에는 urllib2와 함께 복잡한 작업을 수행하는 방법에 대한 예제가 있습니다.

  5. ==============================

    5.또는 urllib2.urlopen과 함께 항상 사용되도록 설치하려는 경우 (따로 따로 참조를 유지할 필요가 없습니다).

    또는 urllib2.urlopen과 함께 항상 사용되도록 설치하려는 경우 (따로 따로 참조를 유지할 필요가 없습니다).

    import urllib2
    url = 'www.proxyurl.com'
    username = 'user'
    password = 'pass'
    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
    # None, with the "WithDefaultRealm" password manager means
    # that the user/pass will be used for any realm (where
    # there isn't a more specific match).
    password_mgr.add_password(None, url, username, password)
    auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
    opener = urllib2.build_opener(auth_handler)
    urllib2.install_opener(opener)
    print urllib2.urlopen("http://www.example.com/folder/page.html").read()
    
  6. ==============================

    6.다음은 urllib를 사용하는 메소드입니다.

    다음은 urllib를 사용하는 메소드입니다.

    import urllib.request
    
    # set up authentication info
    authinfo = urllib.request.HTTPBasicAuthHandler()
    proxy_support = urllib.request.ProxyHandler({"http" : "http://ahad-haam:3128"})
    
    # build a new opener that adds authentication and caching FTP handlers
    opener = urllib.request.build_opener(proxy_support, authinfo,
                                         urllib.request.CacheFTPHandler)
    
    # install it
    urllib.request.install_opener(opener)
    
    f = urllib.request.urlopen('http://www.python.org/')
    """
    
  7. from https://stackoverflow.com/questions/34079/how-to-specify-an-authenticated-proxy-for-a-python-http-connection by cc-by-sa and MIT license