IPIPGO ip proxy HTTP代理IP用于Python爬虫:requests库完整配置代码

HTTP代理IP用于Python爬虫:requests库完整配置代码

HTTP代理IP在Python爬虫中的核心作用 做爬虫最头疼的就是遇到IP被封,网站反爬机制越来越严格,频繁用同一个IP访问很容易被识别。HTTP代理IP相当于给爬虫穿上了“隐身衣”,每次请求都能更换不同的IP地址,大…

HTTP代理IP用于Python爬虫:requests库完整配置代码

HTTP代理IP在Python爬虫中的核心作用

做爬虫最头疼的就是遇到IP被封,网站反爬机制越来越严格,频繁用同一个IP访问很容易被识别。HTTP代理IP相当于给爬虫穿上了“隐身衣”,每次请求都能更换不同的IP地址,大大降低被封风险。特别是对于需要大量数据采集的项目,代理IP几乎成了必备工具。

选择代理IP时要特别注意匿名性,透明代理会暴露真实IP,高匿代理才能完全隐藏。ipipgo提供的住宅代理IP都是高匿名类型,所有请求头都会经过处理,确保爬虫行为不被追踪。

requests库配置代理IP的基础方法

Python的requests库是爬虫最常用的工具,配置代理非常简单。只需要在请求方法中传入proxies参数即可:

import requests

proxies = {
    'http': 'http://用户名:密码@代理服务器地址:端口',
    'https': 'https://用户名:密码@代理服务器地址:端口'
}

response = requests.get('http://目标网站.com', proxies=proxies)
print(response.text)

这里要注意的是,如果代理服务器需要认证,一定要把用户名密码写在URL里。ipipgo的用户可以在控制台找到完整的代理地址和认证信息,直接复制使用即可。

动态代理IP的轮换策略实现

单个代理IP用久了还是会出问题,最好是能自动轮换。我们可以创建一个代理IP池,每次请求随机选择:

import requests
import random

 代理IP池(示例格式)
proxy_list = [
    'http://user1:pass1@proxy1.ipipgo.com:8080',
    'http://user2:pass2@proxy2.ipipgo.com:8080',
    'http://user3:pass3@proxy3.ipipgo.com:8080'
]

def get_with_proxy_rotation(url):
    proxy = random.choice(proxy_list)
    proxies = {
        'http': proxy,
        'https': proxy.replace('http', 'https')
    }
    
    try:
        response = requests.get(url, proxies=proxies, timeout=10)
        return response
    except requests.exceptions.RequestException as e:
        print(f"代理 {proxy} 请求失败: {e}")
         可以从池中移除失效代理
        proxy_list.remove(proxy)
        return None

 使用示例
result = get_with_proxy_rotation('http://目标网站.com')

ipipgo的动态住宅代理IP支持自动轮换,只需要在控制台设置轮换规则,系统会自动处理IP更换,省去了手动维护代理池的麻烦。

会话保持与超时设置技巧

有些网站需要保持会话状态,比如登录后的操作。这时候可以用Session对象配合代理:

import requests

session = requests.Session()

 配置代理
session.proxies = {
    'http': 'http://用户名:密码@代理服务器地址:端口',
    'https': 'https://用户名:密码@代理服务器地址:端口'
}

 设置超时和重试
session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3))
session.mount('https://', requests.adapters.HTTPAdapter(max_retries=3))

 使用会话保持状态
session.get('http://目标网站.com/login', timeout=5)
 后续请求会自动保持cookies
response = session.get('http://目标网站.com/dashboard', timeout=5)

Timeout settings are important,建议根据业务需求调整。一般连接超时设为3-5秒,读取超时10-30秒比较合理。ipipgo的代理服务器响应速度很快,通常1-2秒内就能建立连接。

错误处理与代理IP质量检测

不是所有代理IP都稳定,需要有完善的错误处理机制:

import requests
from requests.exceptions import ProxyError, Timeout, ConnectionError

def check_proxy_health(proxy_url, test_url='http://httpbin.org/ip'):
    """检测代理IP是否可用"""
    proxies = {
        'http': proxy_url,
        'https': proxy_url.replace('http', 'https')
    }
    
    try:
        response = requests.get(test_url, proxies=proxies, timeout=10)
        if response.status_code == 200:
            print(f"代理 {proxy_url} 可用,当前IP: {response.json()['origin']}")
            return True
    except (ProxyError, Timeout, ConnectionError) as e:
        print(f"代理 {proxy_url} 不可用: {e}")
        return False
    
    return False

 定期检测代理IP健康状态
for proxy in proxy_list:
    check_proxy_health(proxy)

ipipgo的代理IP都有99.9%的可用性保证,但建议还是定期做健康检查,确保爬虫任务不会因为代理问题中断。

爬虫实战:完整代码示例

下面是一个结合了上述所有技巧的完整爬虫示例:

import requests
import random
import time
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

class SmartCrawler:
    def __init__(self, proxy_list):
        self.proxy_list = proxy_list
        self.session = None
        
    def create_session(self):
        """创建带重试机制的会话"""
        session = requests.Session()
        
         重试策略
        retry_strategy = Retry(
            total=3,
            backoff_factor=1,
            status_forcelist=[429, 500, 502, 503, 504],
        )
        
        adapter = HTTPAdapter(max_retries=retry_strategy)
        session.mount("http://", adapter)
        session.mount("https://", adapter)
        
        return session
    
    def get_random_proxy(self):
        """随机获取代理IP"""
        return random.choice(self.proxy_list)
    
    def crawl(self, url, headers=None):
        """执行爬取任务"""
        if not self.session:
            self.session = self.create_session()
            
        proxy = self.get_random_proxy()
        proxies = {
            'http': proxy,
            'https': proxy.replace('http', 'https')
        }
        
        default_headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
        }
        
        if headers:
            default_headers.update(headers)
            
        try:
            response = self.session.get(
                url, 
                proxies=proxies,
                headers=default_headers,
                timeout=10
            )
            response.raise_for_status()
            return response.text
            
        except Exception as e:
            print(f"请求失败: {e}")
            return None

 使用示例
if __name__ == "__main__":
     从ipipgo获取的代理列表
    proxies = [
        'http://用户名:密码@proxy1.ipipgo.com:8080',
        'http://用户名:密码@proxy2.ipipgo.com:8080'
    ]
    
    crawler = SmartCrawler(proxies)
    
     模拟爬取多个页面
    urls = ['http://目标网站.com/page1', 'http://目标网站.com/page2']
    
    for url in urls:
        html = crawler.crawl(url)
        if html:
            print(f"成功获取 {url} 的内容")
             这里处理获取到的数据
            time.sleep(2)   礼貌性延迟

Frequently Asked Questions QA

Q: 代理IP连接超时怎么办?
A: 首先检查网络连接是否正常,然后确认代理地址和端口是否正确。ipipgo的代理服务器都有监控,如果持续超时可以联系技术支持检查节点状态。

Q: 如何知道代理IP是否真的生效?
A: 可以访问http://httpbin.org/ip这样的服务,它会返回当前使用的IP地址。对比返回的IP和代理IP是否一致就能判断。

Q: 爬虫需要多少代理IP才够用?
A: 这取决于爬取频率和目标网站的反爬策略。一般小型项目几个IP轮换就够,大规模采集建议使用ipipgo的动态住宅代理,IP池自动管理,无需担心IP不足。

Q: 代理IP被目标网站封了怎么办?
A: ipipgo的住宅代理IP来自真实家庭网络,被封概率很低。如果遇到问题,可以切换其他IP或联系客服调整请求频率策略。

为什么选择ipipgo的代理服务

ipipgo提供专业的代理IP解决方案,特别适合Python爬虫场景:

Dynamic Residential Agents拥有9000万+IP资源,覆盖220+国家和地区,支持自动轮换和粘性会话,按流量计费灵活实惠。

Static Residential Agents50万+高质量IP,99.9%可用性,适合需要稳定IP的长时期任务。

所有代理都支持HTTP和SOCKS5协议,提供完整的API接口和详细的使用文档。无论是个人开发者还是企业级应用,都能找到合适的解决方案。

实际使用中,ipipgo的代理连接稳定,速度快,大大提升了爬虫的效率和成功率。特别是对于需要大量数据采集的项目,可靠的代理服务能省去很多维护成本。

我们的产品仅支持在境外环境下使用(除TikTok专线外),用户使用IPIPGO从事的任何行为均不代表IPIPGO的意志和观点,IPIPGO不承担任何法律责任。

business scenario

Discover more professional services solutions

💡 Click on the button for more details on specialized services

新春惊喜狂欢,代理ip秒杀价!

Professional foreign proxy ip service provider-IPIPGO

Contact Us

Contact Us

13260757327

Online Inquiry. QQ chat

E-mail: hai.liu@xiaoxitech.com

Working hours: Monday to Friday, 9:30-18:30, holidays off
Follow WeChat
Follow us on WeChat

Follow us on WeChat

Back to top
en_USEnglish