>  기사  >  백엔드 개발  >  Python 크롤러용 프록시를 설정하는 방법

Python 크롤러용 프록시를 설정하는 방법

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-06-13 16:58:306939검색

일부 웹사이트에는 해당하는 크롤러 방지 조치가 있습니다. 예를 들어, 많은 웹사이트는 특정 기간 동안 특정 IP에 대한 방문 횟수를 감지합니다. 방문 빈도가 너무 빠르고 정상적인 방문자처럼 보이지 않는 경우. 이 IP에 대한 액세스를 금지할 수 있습니다. 따라서 프록시 서버를 설정하고 가끔씩 프록시를 변경해야 합니다. IP가 금지된 경우에도 IP를 변경하고 계속 크롤링할 수 있습니다.

Python 크롤러용 프록시를 설정하는 방법

Python에서는 urllib2의 ProxyHandler를 사용하여 프록시 서버를 설정할 수 있습니다. 다음 코드는 프록시 사용 방법을 설명합니다.

import urllib2
# 构建了两个代理Handler,一个有代理IP,一个没有代理IP
httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})
nullproxy_handler = urllib2.ProxyHandler({})
#定义一个代理开关
proxySwitch = True 
# 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象
# 根据代理开关是否打开,使用不同的代理模式
if proxySwitch:  
    opener = urllib2.build_opener(httpproxy_handler)
else:
    opener = urllib2.build_opener(nullproxy_handler)
request = urllib2.Request("http://www.baidu.com/")
# 使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。
response = opener.open(request)
# 就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。
# urllib2.install_opener(opener)
# response = urlopen(request)
print response.read()

위는 일부 프록시에서 수집할 수 있는 무료 개방형 프록시입니다. 웹사이트 테스트 후 이러한 무료 프록시를 사용할 수 있으면 크롤러에서 수집되어 사용됩니다.

관련 추천: "python 비디오 튜토리얼"

무료 프록시 웹사이트:

Western Thorns 무료 프록시

빠른 프록시 무료 프록시

National 프록시 IP

프록시가 충분하면 넣을 수 있습니다. 목록에서 무작위로 프록시를 선택하여 웹사이트에 접속하세요.

import urllib2
import random
proxy_list = [
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"},
    {"http" : "124.88.67.81:80"}
]
# 随机选择一个代理
proxy = random.choice(proxy_list)
# 使用选择的代理构建代理处理器对象
httpproxy_handler = urllib2.ProxyHandler(proxy)
opener = urllib2.build_opener(httpproxy_handler)
request = urllib2.Request("http://www.baidu.com/")
response = opener.open(request)
print response.read()

위 내용은 모두 무료 프록시이므로 안정성이 좋지 않아 사용할 수 없는 경우가 많습니다. 이때 개인 프록시 사용을 고려해 볼 수 있습니다. 즉, 에이전트 공급자로부터 에이전트를 구매하면 공급자는 고유한 사용자 이름과 비밀번호를 제공합니다. 이는 다음과 같은 추가 계정 인증입니다.

# 构建具有一个私密代理IP的Handler,其中user为账户,passwd为密码
httpproxy_handler = urllib2.ProxyHandler({"http" : "user:passwd@124.88.67.81:80"})

위는 urllib2를 사용하여 에이전트 메소드를 설정하는 방법인데, 프록시를 사용하기 위해 요청을 어떻게 사용하는지 살펴보겠습니다.

무료 프록시 사용:

import requests
# 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式:
proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" }
response = requests.get("http://www.baidu.com", proxies = proxy)
print response.text

참고: 유출을 방지하기 위해 환경 변수에 계정 비밀번호를 쓸 수 있습니다

위 내용은 Python 크롤러용 프록시를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.