python 프록시 액세스 서버 사용

3818 단어
python에서 프록시 액세스 서버를 사용하는 데는 주로 3단계가 있습니다.
1. 프록시 프로세서 ProxyHandler 만들기:
proxy_support = urllib.request.ProxyHandler (), ProxyHandler 는 클래스입니다. 매개 변수는 사전입니다. {'유형':'프록시 ip: 포트 번호'}
Handler란 무엇입니까?Handler는 프로세서라고도 부른다. 모든 Handlers는 특정 프로토콜을 통해 URLs를 열거나 URL이 열릴 때의 여러 가지 측면, 예를 들어 HTTP 리디렉션이나 HTTP 쿠키를 어떻게 처리하는지 안다.
2. Opener 사용자 정의, 만들기:
opener = urllib.request.build_opener(proxy_support)
Opener가 뭐예요?python은 URL 링크를 열 때opener를 사용합니다.사실, urllib.request.urlopen () 함수는 사실상 기본적인opener를 사용합니다. 단, 여기에서handler를 지정하기 위해opener를 사용자 정의해야 합니다.
3a.opener 설치
urllib.request.install_opener(opener)
install_Opener는 기본 Opener를 만드는 데 사용됩니다. 이것은 urlopen을 호출하면 설치된 Opener를 사용합니다.
3b.openeropener를 호출합니다.open(url)
이 방법은 urlopen 함수처럼 urls를 가져오는 데 직접 사용할 수 있습니다. 보통 install_opener, 편의를 위해서만 빼고.
>>> proxy_support = urllib.request.ProxyHandler({'http':'115.32.41.100:80'})
>>> proxy_support
<urllib.request.ProxyHandler object at 0x0000000002EE74A8>
>>> opener = urllib.request.build_opener(proxy_support)
>>> opener
<urllib.request.OpenerDirector object at 0x0000000002F972B0>
>>> opener.handlers
[<urllib.request.ProxyHandler object at 0x0000000002EE74A8>, <urllib.request.UnknownHandler object at 0x0000000003197B38>, <urllib.request.HTTPHandler object at 0x0000000003197C18>, <urllib.request.HTTPDefaultErrorHandler object at 0x0000000003197CC0>, <urllib.request.HTTPRedirectHandler object at 0x0000000003197BA8>, <urllib.request.FTPHandler object at 0x0000000003197DD8>, <urllib.request.FileHandler object at 0x0000000003197E80>, <urllib.request.HTTPSHandler object at 0x0000000003197E48>, <urllib.request.HTTPErrorProcessor object at 0x0000000003197E10>]
>>> opener.addheaders
[('User-agent', 'Python-urllib/3.3')]
>>> opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
>>> opener.addheaders
[('User-Agent', 'Test_Proxy_Python3.5_maminyao')]
>>> 

 
프록시 IP 목록에서 임의로 어떤 IP를 사용하여 URL에 접근하는 예
import urllib.request
import random

url = 'http://www.whatismyip.com.tw'
iplist = ['115.32.41.100:80','58.30.231.36:80','123.56.90.175:3128']

proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

print(html)

좋은 웹페이지 즐겨찾기