문제

나는 다음과 함께 URL을 열었다.

site = urllib2.urlopen('http://google.com')

그리고 내가하고 싶은 것은 나에게 말하는 어딘가에있는 프록시와 같은 방식으로 연결하는 것입니다.

site = urllib2.urlopen('http://google.com', proxies={'http':'127.0.0.1'})

그러나 그것은 작동하지 않았습니다.

urllib2에는 프록시 핸들러와 같은 것이 있지만 그 기능을 기억할 수는 없습니다.

도움이 되었습니까?

해결책

proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')

다른 팁

프록시 핸들러를 설치해야합니다

urllib2.install_opener(
    urllib2.build_opener(
        urllib2.ProxyHandler({'http': '127.0.0.1'})
    )
)
urllib2.urlopen('http://www.google.com')

환경 변수를 사용하여 프록시를 설정할 수 있습니다.

import os
os.environ['http_proxy'] = '127.0.0.1'
os.environ['https_proxy'] = '127.0.0.1'

urllib2 이 방법으로 프록시 핸들러를 자동으로 추가합니다. 다른 프로토콜에 대한 프록시를 별도로 설정해야합니다. 그렇지 않으면 (프록시를 통과하지 않는 측면에서) 실패합니다. 아래를 참조하십시오.

예를 들어:

proxy = urllib2.ProxyHandler({'http': '127.0.0.1'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')
# next line will fail (will not go through the proxy) (https)
urllib2.urlopen('https://www.google.com')

대신에

proxy = urllib2.ProxyHandler({
    'http': '127.0.0.1',
    'https': '127.0.0.1'
})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
# this way both http and https requests go through the proxy
urllib2.urlopen('http://www.google.com')
urllib2.urlopen('https://www.google.com')

기본 시스템 프록시 (예 : http_support 환경 변수의)를 사용하려면 다음은 현재 요청에 대한 작동 (전 세계적으로 urllib2에 설치하지 않고)을 사용합니다.

url = 'http://www.example.com/'
proxy = urllib2.ProxyHandler()
opener = urllib2.build_opener(proxy)
in_ = opener.open(url)
in_.read()

허용 된 답변 외에도 : 내 비난은 나에게 오류를 주었다.

File "c:\Python23\lib\urllib2.py", line 580, in proxy_open
    if '@' in host:
TypeError: iterable argument required

솔루션은 프록시 문자열 앞에 http : //을 추가하는 것이 었습니다.

proxy = urllib2.ProxyHandler({'http': 'http://proxy.xy.z:8080'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com')

프록시를 사용하여 웹 페이지에 액세스하려면 요청을 사용할 수도 있습니다. 파이썬 3 코드 :

>>> import requests
>>> url = 'http://www.google.com'
>>> proxy = '169.50.87.252:80'
>>> requests.get(url, proxies={"http":proxy})
<Response [200]>

둘 이상의 프록시도 추가 할 수 있습니다.

>>> proxy1 = '169.50.87.252:80'
>>> proxy2 = '89.34.97.132:8080'
>>> requests.get(url, proxies={"http":proxy1,"http":proxy2})
<Response [200]>

또한 명령 줄 세션의 프록시를 설정하여 스크립트를 실행할 수있는 명령 줄을 엽니 다.

netsh winhttp set proxy YourProxySERVER:yourProxyPORT

해당 터미널에서 스크립트를 실행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top