이 글의 내용은 Python을 사용하여 익명 프록시 풀을 구축하는 방법을 소개하는 것입니다. 익명 프록시 풀을 구축하는 방법. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
크롤러가 너무 많아 웹사이트에서 자신의 IP가 차단됐다는 불평을 자주 듣는데, 다양한 프록시 IP를 자주 사용해야 하는데, 인터넷상의 공용 프록시는 대부분 사용할 수 없기 때문에 돈을 써야 한다. .VIP 대행사에 지원하기 위해 최선을 다했지만 우여곡절 끝에 또다시 막혔습니다. 이로써 Python을 사용하여 프록시 풀을 구축하여 시간과 에너지 비용을 절감하고 자동으로 활성 프록시 IP를 얻는 기능을 실현하는 방법에 대한 기사를 작성합니다.
작동 원리
1. 웹사이트 프록시 획득
1. 무료 프록시 웹사이트의 IP 목록을 크롤링하여 사용 가능 여부와 밀도가 높은지 테스트합니다
2. 데이터베이스에 넣고 그렇지 않으면 폐기합니다.
3.2단계를 반복합니다.
2. 실패한 프록시를 가능한 한 빨리 프록시 풀에서 선택할 수 있는지 확인합니다. 1.크롤러 데이터베이스에서 IP를 가져옵니다.
2. IP 섹스의 가용성 및 익명성3. 익명이 가능하다면 보관하고 그렇지 않으면 폐기하세요.
4. 1단계를 반복하세요.
지침 ①
: 크롤러 데몬(Daemon)을 만들 수 있습니다. 필요한 친구는 직접 Google에서 찾을 수 있습니다.설명 ②
: 외부 프록시 정보 인터페이스를 구축할 수 있습니다. NodeJS를 사용하든, Flask/Django를 사용하든, PHP를 사용하든 여기서는 소개하지 않겠습니다.구현:
권장 라이브러리: 요청, BeautifulSoup, re, sqlite3.
그 중 요청 라이브러리는 에이전트 웹사이트 페이지를 가져오는 데 사용되고, BeautifulSoup 및 re 라이브러리는 에이전트 정보를 가져오는 데 사용되며, sqlite3은 이 정보에 액세스하는 데 사용됩니다. 필요한 경우(예: 프록시 웹사이트에 크롤러 방지 전략이 있는 경우) PhantomJS를 사용하여 요청을 대체하거나 해당 라이브러리를 데이터 정리(예: base64 디코딩)에 사용할 수 있습니다. 다음은 각 부분의 코드에 대한 간략한 데모입니다. 첫 번째는 프록시를 크롤링할 수 있고 IP로 쉽게 차단되지 않는 여러 웹사이트를 선택하는 것입니다. 여기서는 Proxy-list.org를 예로 들어보겠습니다.다음은 간단한 프록시입니다. 풀 프레임워크 클래스의 코드는 프록시 데이터베이스의 추가, 삭제, 연결성 감지 및 익명성 감지를 제공합니다.
BASE_URL = "https://proxy-list.org/english/index.php?p=" #IP地址及端口的正则 Re_Pattern_IP = re.compile("(.*):") Re_Pattern_PORT = re.compile(":(.*)") #网站有11页,所以循环11次获取所有代理IP及端口 for startingURL_Param in range(1,11): HTML_ProxyPage = requests.get(BASE_URL+str(startingURL_Param)).content soup = bs(HTML_ProxyPage,"html.parser") for Raw_ProxyInfo in soup.find_all("ul",{"class":None}): #此网站有用Base64简单对代理进行了加密,所以这里对其解码 ip_port = base64.b64decode(Raw_ProxyInfo.find("li",{"class":"proxy"}).text.replace("Proxy('","").replace("')","")) #接下来利用正则从网页数据中提取我们需要的信息 IP = re.findall(Re_Pattern_IP, ip_port)[0] PORT = re.findall(Re_Pattern_PORT, ip_port)[0] TYPE = Raw_ProxyInfo.find("li",{"class":"https"}).text
다음은 프록시 풀에서 "잘못된 IP"를 제거하는 코드입니다.
class ProxyPool: #初始化爬虫池数据库 def __init__(self,ProxyPoolDB): self.ProxyPoolDB = ProxyPoolDB self.conn = sqlite3.connect(self.ProxyPoolDB, isolation_level=None) self.cursor = self.conn.cursor() self.TB_ProxyPool = "TB_ProxyPool" self.cursor.execute("CREATE TABLE IF NOT EXISTS "+self.TB_ProxyPool+"(ip TEXT UNIQUE, port INTEGER, protocol TEXT)") #添加代理IP进代理池的接口 def addProxy(self, IP, PORT, PROTOCOL): self.cursor.execute("INSERT OR IGNORE INTO " + self.TB_ProxyPool+"(ip, port, protocol) VALUES (?,?,?)", [IP,PORT,PROTOCOL]) #检查代理的匿名性及可连接性 def testConnection(self, IP, PORT, PROTOCOL): proxies = { PROTOCOL: IP+":"+PORT } try: OrigionalIP = requests.get("http://icanhazip.com",timeout=REQ_TIMEOUT).content MaskedIP = requests.get("http://icanhazip.com", timeout=REQ_TIMEOUT,proxies=proxies).content if OrigionalIP != MaskedIP: return True else: return False except: return False #删除代理IP对应的数据库记录 def delRecord(self, IP): self.cursor.execute("DELETE FROM "+self.TB_ProxyPool+" WHERE ip=?",(IP,))
Reflection
이 프로젝트에서 필기 연습을 위해 Python을 사용했습니다. 지금 돌이켜보면 로직이 충분히 엄격하지 않고, 다양한 기능이 너무 결합되어 있고, 많은 문단을 다시 작성해야 하기 때문입니다. 코드는 캠퍼스 네트워크에서 실행되지만 여전히 필요합니다. 네트워크 연결의 안정성을 고려하면 코드 부분 사이에 혼란스러운 관계가 생성됩니다.
icanhazip.com을 통해 프록시 익명성을 탐지하는 방법은 효과적일 수 있지만 X-Forwarded-For HTTP 헤더를 무시하므로 매우 위험하므로 개선해야 합니다.
에이전트 풀에 있는 에이전트의 유효성을 확인하려면 멀티스레딩이 필요하며 현재 솔루션은 너무 비효율적입니다.
완전한 코드독자에게 자체 구현에 대한 아이디어와 참조를 제공하기 위해 프록시 풀의 핵심 코드가 포함되어 있습니다. Ubuntu 16.04 및 Kali에서 Python 2.7로 테스트할 수 있습니다.
위 내용은 Python을 사용하여 익명 프록시 풀을 구축하는 방법은 무엇입니까? 익명 프록시 풀을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
