IPIPGO ip代理 python爬虫怎么设置代理ip?requests/selenium代理配置详细示例

python爬虫怎么设置代理ip?requests/selenium代理配置详细示例

为什么爬虫需要代理IP? 做爬虫的朋友经常会遇到一个头疼的问题:目标网站把你的IP给封了。可能因为你短时间内请求太频繁,或者触发了网站的反爬虫规则。一旦IP被封,你的爬虫程序就“瘫痪”了,数据也抓取不…

python爬虫怎么设置代理ip?requests/selenium代理配置详细示例

为什么爬虫需要代理IP?

做爬虫的朋友经常会遇到一个头疼的问题:目标网站把你的IP给封了。可能因为你短时间内请求太频繁,或者触发了网站的反爬虫规则。一旦IP被封,你的爬虫程序就“瘫痪”了,数据也抓取不到了。这时候,代理IP就成了一个非常实用的解决方案。

简单来说,代理IP就是一个中间服务器。你的爬虫程序不再直接去访问目标网站,而是先把请求发给代理服务器,再由代理服务器去访问网站并返回结果。这样,在目标网站看来,访问它的IP地址是代理服务器的IP,而不是你本机的真实IP。即使这个代理IP被封锁,你只需要换一个代理IP,爬虫就能继续工作,大大提高了程序的稳定性和匿名性。

requests库如何配置代理IP?

Python的requests库是爬虫最常用的工具之一,配置代理也非常简单。你只需要在发起请求时,通过proxies参数传入一个包含代理协议的字典即可。

代理IP的格式通常是这样的:协议://用户名:密码@IP地址:端口。对于提供代理服务的平台,比如ipipgo,在你购买套餐后,会获得一个包含认证信息的代理链接。

下面是一个使用ipipgo动态住宅代理的详细示例:

import requests

 假设你从ipipgo后台获取到的代理信息如下:
 代理服务器地址:gateway.ipipgo.com
 端口:8888
 用户名:your_username
 密码:your_password

 构建代理地址
proxy_host = "gateway.ipipgo.com"
proxy_port = "8888"
proxy_user = "your_username"
proxy_pass = "your_password"

 格式化代理字符串(支持HTTP和HTTPS协议)
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"

 设置proxies参数字典
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

 目标网址
url = "https://httpbin.org/ip"   这个网址会返回你当前使用的IP

try:
     使用代理发起请求
    response = requests.get(url, proxies=proxies, timeout=10)
    response.raise_for_status()   检查请求是否成功
    print("请求成功!")
    print("目标网站看到的IP是:", response.text)
except requests.exceptions.RequestException as e:
    print("请求失败:", e)

要点解析:

1. 协议指定:在proxies字典里,我们分别指定了httphttps协议都使用同一个代理地址。这样无论你访问的是HTTP还是HTTPS网站,都会走代理。

2. 认证信息:像ipipgo这类专业服务商的代理通常需要用户名密码认证,格式是用户名:密码@主机:端口,直接写在URL里即可。

3. 超时设置timeout参数非常重要。如果代理服务器响应慢或无响应,设置超时可以避免程序长时间卡住。

selenium如何配置代理IP?

对于需要模拟浏览器行为的爬虫(比如处理JavaScript渲染的页面),selenium是更合适的选择。给selenium配置代理的方法根据浏览器驱动不同而略有差异。

这里以最常用的Chrome浏览器为例,展示两种配置方法。

方法一:通过ChromeOptions添加启动参数(无需认证)

如果你的代理IP不需要用户名密码认证(例如一些本地搭建的代理,或者某些服务商提供的特殊接入方式),可以使用这种方法。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()

 添加代理服务器地址和端口
 格式:--proxy-server=http://IP:PORT 或 --proxy-server=socks5://IP:PORT
proxy = "http://gateway.ipipgo.com:8888"   替换成你的代理IP和端口
chrome_options.add_argument(f'--proxy-server={proxy}')

 如果代理需要认证,此方法无法直接传入用户名密码,需要配合其他插件,较为复杂。
 对于需要认证的代理,推荐使用方法二。

driver = webdriver.Chrome(options=chrome_options)

try:
    driver.get("https://httpbin.org/ip")
    print(driver.page_source)   页面会显示当前使用的IP
finally:
    driver.quit()

方法二:使用插件处理认证(推荐,支持用户名密码)

对于ipipgo这类需要用户名密码认证的代理,我们可以创建一个包含认证信息的浏览器插件,并在启动时加载它。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import zipfile

 代理信息
proxy_host = "gateway.ipipgo.com"
proxy_port = 8888
proxy_user = "your_username"
proxy_pass = "your_password"

 创建一个临时的插件文件来处理代理认证
manifest_json = """
{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    }
}
"""

background_js = """
var config = {
        mode: "fixed_servers",
        rules: {
          singleProxy: {
            scheme: "http",
            host: "%s",
            port: parseInt(%s)
          },
          bypassList: ["localhost"]
        }
      };

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
        authCredentials: {
            username: "%s",
            password: "%s"
        }
    };
}

chrome.webRequest.onAuthRequired.addListener(
            callbackFn,
            {urls: [""]},
            ['blocking']
);
""" % (proxy_host, proxy_port, proxy_user, proxy_pass)

chrome_options = Options()

 将插件写入临时文件
plugin_file = 'proxy_auth_plugin.zip'
with zipfile.ZipFile(plugin_file, 'w') as zp:
    zp.writestr("manifest.json", manifest_json)
    zp.writestr("background.js", background_js)

chrome_options.add_extension(plugin_file)

 启动浏览器
driver = webdriver.Chrome(options=chrome_options)

try:
    driver.get("https://httpbin.org/ip")
     等待页面加载并获取内容
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    body = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    print("目标网站看到的IP是:", body.text)
finally:
    driver.quit()
     可选:删除临时插件文件
    import os
    os.remove(plugin_file)

方法二虽然代码稍长,但它能完美解决代理的认证问题,是使用selenium搭配付费代理服务(如ipipgo)最稳定可靠的方式。

如何选择合适的ipipgo代理套餐?

不同的爬虫项目对代理IP的需求不同。选择ipipgo的套餐时,可以从以下几个场景来考虑:

你的需求场景 推荐的ipipgo套餐 核心优势
大规模数据采集,需要频繁更换IP以避免封锁(如电商价格监控、搜索引擎抓取) 动态住宅代理 IP池巨大(9000万+),自动轮换,高度匿名,按流量计费更划算。
需要长期稳定使用同一个IP地址的业务(如管理社交媒体账号、保持网站登录状态) 静态住宅代理 IP长期稳定不变,纯净度高,99.9%可用性,适合需要“粘性会话”的场景。
爬虫项目需要极高的成功率,且目标网站反爬极其严格 动态住宅代理(企业版)或 静态住宅代理 资源更优质,稳定性更强,能提供更好的匿名性和请求成功率。

简单来说:要不断换IP就用动态,要固定IP就用静态。你可以根据项目的预算和具体需求,在ipipgo官网上选择相应的套餐类型。

常见问题与解答(QA)

Q1:我用了代理IP,为什么还是被网站封了?

A1:这可能有几个原因。检查你的请求频率是否依然过高,即使用代理,过快的访问速度也会触发风控。你使用的代理IP可能已经被目标网站拉黑,尝试换一批IP。确保你的爬虫行为模拟得足够“像人”,比如添加随机间隔、使用不同的User-Agent等。ipipgo提供的住宅代理IP来自真实家庭网络,被封的概率比数据中心IP低很多,但合理的爬取策略依然关键。

Q2:requests和selenium配置代理,哪个更简单?

A2:对于简单的、无需处理JavaScript的请求,requests配置代理更简单直接,几行代码就能搞定。对于需要浏览器渲染的复杂页面,selenium是必须的,其代理配置(尤其是带认证的)稍显复杂,但一旦掌握模板,也很方便。根据你的目标网站技术栈来选择工具。

Q3:从ipipgo获取的代理地址,测试时连接超时怎么办?

A3:请确保你的本地网络环境可以访问ipipgo的网关服务器(如gateway.ipipgo.com)。核对你的代理用户名、密码、端口是否输入正确。检查你的代码中是否设置了合理的timeout(超时)时间,网络不畅时适当调大。如果问题持续,可以联系ipipgo的客服检查代理通道状态。

Q4:一个代理IP可以用多久?

A4:这取决于你购买的套餐类型。ipipgo的动态住宅代理IP默认有存活时间(例如几分钟到几十分钟),适合短时任务,用完后自动从海量池中更换。而静态住宅代理IP的存活期很长,只要你持续使用且不违规,可以长期固定使用,非常适合需要维持会话的业务。

Q5:我的爬虫需要同时使用很多个代理IP,如何管理?

A5:对于动态代理,ipipgo通常提供一个网关,你每次请求网关,它会自动分配一个不同的IP(轮换模式),无需你手动管理IP列表。对于需要自己调度大量静态IP的场景,建议将IP列表存入数据库或文件,然后在爬虫中编写一个简单的代理IP池管理器,负责分配IP、检测IP有效性、剔除失效IP等,这是中高级爬虫工程的常见做法。

我们的产品仅支持在境外网络环境下使用(除TikTok专线外),用户使用IPIPGO从事的任何行为均不代表IPIPGO的意志和观点,IPIPGO不承担任何法律责任。
IPIPGO-动态住宅ip全新升级

专业国外代理ip服务商—IPIPGO

联系我们

联系我们

13260757327

在线咨询: QQ交谈

邮箱: hai.liu@xiaoxitech.com

工作时间:周一至周五,9:30-18:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部
zh_CN简体中文