>백엔드 개발 >파이썬 튜토리얼 >Python 크롤러에 의해 IP가 차단되는 것을 방지하는 방법

Python 크롤러에 의해 IP가 차단되는 것을 방지하는 방법

little bottle
little bottle앞으로
2019-04-10 17:06:583222검색

데이터를 크롤링하기 위해 크롤러를 작성할 때, 특히 대량의 데이터를 크롤링할 때 많은 웹사이트에 크롤링 방지 조치가 있기 때문에 IP가 차단되기 쉽고 크롤링을 계속할 수 없습니다. 이 문서에서는 이 문제를 해결하는 방법에 대한 몇 가지 대책을 요약합니다. 이러한 조치는 단독으로 사용하거나 더 나은 결과를 위해 동시에 사용할 수 있습니다.

Fake User-Agent

요청 헤더의 User-Agent를 브라우저의 User-Agent로 설정하여 브라우저 액세스를 위조합니다. 예:

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
resp = requests.get(url,headers = headers)

반복 크롤링 사이의 임의 시간 간격 설정

# 比如:
time.sleep(random.randint(0,3))  # 暂停0~3秒的整数秒,时间区间:[0,3]
# 或:
time.sleep(random.random())  # 暂停0~1秒,时间区间:[0,1)

Fake cookie

브라우저에서 정상적으로 작동하는 경우 페이지에서는 브라우저에서 쿠키를 복사하여 다음과 같이 사용할 수 있습니다.

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')
resp = requests.get(url,cookies = cookies)
# 把浏览器的cookies字符串转成字典
def cookies2dict(cookies):
    items = cookies.split(';')
    d = {}
    for item in items:
        kv = item.split('=',1)
        k = kv[0]
        v = kv[1]
        d[k] = v
    return d

참고: 브라우저 쿠키를 사용하여 요청을 시작한 후 요청 빈도가 너무 빈번하면 IP는 여전히 브라우저에서 해당 수동 확인(예: 확인 이미지 클릭 등)을 수행한 다음 계속해서 쿠키를 사용하여 정상적으로 요청을 시작할 수 있습니다.

프록시 사용

액세스에 여러 프록시 IP를 사용하여 동일한 IP가 너무 많은 요청을 실행하여 차단되는 것을 방지할 수 있습니다. 예:

proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'}
resp = requests.get(url,proxies = proxies)
# 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/
# 🎜 🎜#【추천 강좌:

Python 동영상 튜토리얼

위 내용은 Python 크롤러에 의해 IP가 차단되는 것을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제