# 代ç使ç¨è¯´æ 代çä½¿ç¨æä¸¤ç§æ¹å¼ 1. ç¨æ¡æ¶å ç½®çä»£çæ± 2. èªå·±å ## 1. æ¡æ¶å ç½®çä»£çæ± ### åºæ¬ä½¿ç¨ å¨é ç½®æä»¶ä¸é 置代çæåæ¥å£ ```python # 设置代ç PROXY_EXTRACT_API = None # 代çæåAPI ï¼è¿åç代çåå²ç¬¦ä¸º\r\n PROXY_ENABLE = True ``` è¦æ±APIè¿åçä»£çæ ¼å¼ä¸ºï¼ ``` ip:port ip:port ip:port ``` è¿æ ·feapderå¨è¯·æ±æ¶ä¼èªå¨éæºä½¿ç¨ä¸é¢ç代ç请æ±äº ### é«é¶ > 注æï¼é«é¶ç¨æ³ç°å¨ä¸å¤ªå好ï¼åæä¼è°æ´ä½¿ç¨æ¹å¼ 1. æ 记代ç失ææå»¶æ¶ä½¿ç¨ ä¾å¦å¨åçå¼å¸¸æ¶å¤ç代ç ```python import feapder class TestProxy(feapder.AirSpider): def start_requests(self): yield feapder.Request("https://www.baidu.com") def parse(self, request, response): print(response) def exception_request(self, request, response): # request.proxies_pool.tag_proxy(request.requests_kwargs.get("proxies"), -1) # åºå¼æ¬æ¬¡ä»£ç request.proxies_pool.tag_proxy(request.requests_kwargs.get("proxies"), 1, 30) # å»¶è¿æ¬æ¬¡ä»£ç30ç§ååä½¿ç¨ ``` 1. æå®ä»£çæåæ¶é´é´éç å¨ä»£ç 头é¨ç»feapder.Request.proxies_pooléæ°èµå¼ ```python import feapder from feapder.network.proxy_pool import ProxyPool proxy_pool= ProxyPool(reset_interval_max=180, reset_interval=5) feapder.Request.proxies_pool = proxy_pool ``` ç¸å½äºä¿®æ¹äºä»£çæ± çé»è®¤åæ°å¼ï¼æ´å¤åæ°çæºç 1. ä»rediséæå代ç ```python import feapder from feapder.network.proxy_pool import ProxyPool proxy_pool = ProxyPool( proxy_source_url="redis://:passwd@host:ip/db", redis_proxies_key="proxies" ) feapder.Request.proxies_pool = proxy_pool ``` è¦æ±redis使ç¨zsetéååå¨ä»£çï¼åå¨å 容示ä¾å¦ä¸ï¼ ``` ip:port ip:port ip:port ``` redis_proxies_keyå为åå¨ä»£ççkeyï¼æ¯æ¬¡æåæ¶ä¼æåå ¨é ## 2. èªå·±å èªå·±åå°±æ¯è¾çµæ´»ï¼èªå·±éæºå个代çï¼ç¶åç»requestèµå¼å³å¯ï¼ä¾å¦å¨ä¸è½½ä¸é´ä»¶éä½¿ç¨ ```python import feapder class TestProxy(feapder.AirSpider): def start_requests(self): yield feapder.Request("https://www.baidu.com") def download_midware(self, request): # è¿ééæºå个代ç使ç¨å³å¯ request.proxies = {"https": "https://ip:port", "http": "http://ip:port"} return request def parse(self, request, response): print(response) ```