【0基础学爬虫】爬虫基础之代理的基本使用
字数 786 2025-08-11 08:36:09

爬虫基础之代理的使用详解

一、代理概述

代理服务器(Proxy Server)作为客户端与服务端之间的中间层,代替用户与目标服务器进行通信。当使用代理时:

  • 服务端获取到的是代理服务器的IP地址
  • 实现了真实IP的隐藏

二、代理的主要作用

  1. 突破访问限制:绕过基于IP地址的访问限制
  2. 爬虫数据采集:防止爬虫程序被目标网站封禁或限制访问
  3. 提高网络安全性:隐藏真实IP地址,防止黑客攻击和网络钓鱼

三、代理分类

1. 根据匿名度分类

类型 别名 特点 适用场景
高匿名代理 完全匿名代理 完全隐藏客户端真实IP和其他信息,服务端无法识别 高安全性要求的场景
普通匿名代理 匿名代理 隐藏客户端IP但暴露其他请求信息 一般匿名需求
透明代理 普通代理 不隐藏任何客户端信息 使用较少

2. 根据支持协议分类

  • HTTP代理:转发HTTP请求,主要用于网页访问
  • HTTPS代理:转发HTTPS请求,建立安全通信通道
  • FTP代理:转发FTP请求,用于文件传输
  • SOCKS代理:通用代理,支持任意类型网络请求

3. 根据地理位置分类

  • 国外代理
  • 国内代理

四、代理的使用方法

1. 代理格式

普通代理格式:

proxy = {
    'https://': 'http://%(ip)s:%(port)s' % {"ip":ip,"port":port},
    'http://': 'http://%(ip)s:%(port)s' % {"ip":ip,"port":port}
}

账号密码认证格式:

proxy = {
    "http": "http://%(user)s:%(pwd)s@%(ip)s:%(port)s/" % {"user": username, "pwd": password, "ip":ip,"port":port},
    "https": "http://%(user)s:%(pwd)s@%(ip)s:%(port)s/" % {"user": username, "pwd": password, "ip":ip,"port":port}
}

2. 各库的代理设置方法

urllib设置代理

import urllib.request

proxy = {
    'https': 'http://112.74.202.247:16816',
    'http': 'http://112.74.202.247:16816'
}

proxy_handler = urllib.request.ProxyHandler(proxy)
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
response = urllib.request.urlopen('http://httpbin.org/get').read().decode('utf-8')
print(response)

requests设置代理

import requests

proxy = {
    'https': 'http://112.74.202.247:16816',
    'http': 'http://112.74.202.247:16816'
}

url = 'http://httpbin.org/get'
response = requests.get(url, proxies=proxy)
print(response.json())

httpx设置代理

import httpx

proxy = {
    'https://': 'http://112.74.202.247:16816',
    'http://': 'http://112.74.202.247:16816'
}

url = 'http://httpbin.org/get'
response = httpx.get(url, proxies=proxy)
print(response.json())

httpx Client设置代理

import httpx

proxy = {
    'https://': 'http://112.74.202.247:16816',
    'http://': 'http://112.74.202.247:16816'
}

with httpx.Client(proxies=proxy) as client:
    response = client.get('https://httpbin.org/get')
    print(response.json())

aiohttp设置代理

import aiohttp
import asyncio

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get('https://httpbin.org/get', proxy=proxy) as response:
            print(await response.json())

if __name__ == "__main__":
    proxy = "http://112.74.202.247:16816"
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

websocket设置代理

方法一:

from websocket import WebSocketApp

def on_message(ws, message):
    print(message)

def on_open(ws):
    ws.send("Hello, WebSocket!")

if __name__ == "__main__":
    proxies = {
        "http_proxy_host": "112.74.202.247",
        "http_proxy_port": 16816,
    }
    ws = WebSocketApp("ws://echo.websocket.org/", on_message=on_message)
    ws.on_open = on_open
    ws.run_forever(**proxies)

方法二:

ws = WebSocketApp("ws://echo.websocket.org/",
                 http_proxy_host="112.74.202.247",
                 http_proxy_port=16816)

五、总结

  1. 在爬虫开发中,使用代理是提高程序稳定性的重要手段
  2. 优质代理能帮助解决IP封禁、访问限制等问题
  3. 不同库的代理设置方法有所不同,需注意格式差异
  4. 根据实际需求选择合适的代理类型(匿名度、协议支持等)
爬虫基础之代理的使用详解 一、代理概述 代理服务器(Proxy Server)作为客户端与服务端之间的中间层,代替用户与目标服务器进行通信。当使用代理时: 服务端获取到的是代理服务器的IP地址 实现了真实IP的隐藏 二、代理的主要作用 突破访问限制 :绕过基于IP地址的访问限制 爬虫数据采集 :防止爬虫程序被目标网站封禁或限制访问 提高网络安全性 :隐藏真实IP地址,防止黑客攻击和网络钓鱼 三、代理分类 1. 根据匿名度分类 | 类型 | 别名 | 特点 | 适用场景 | |------|------|------|----------| | 高匿名代理 | 完全匿名代理 | 完全隐藏客户端真实IP和其他信息,服务端无法识别 | 高安全性要求的场景 | | 普通匿名代理 | 匿名代理 | 隐藏客户端IP但暴露其他请求信息 | 一般匿名需求 | | 透明代理 | 普通代理 | 不隐藏任何客户端信息 | 使用较少 | 2. 根据支持协议分类 HTTP代理 :转发HTTP请求,主要用于网页访问 HTTPS代理 :转发HTTPS请求,建立安全通信通道 FTP代理 :转发FTP请求,用于文件传输 SOCKS代理 :通用代理,支持任意类型网络请求 3. 根据地理位置分类 国外代理 国内代理 四、代理的使用方法 1. 代理格式 普通代理格式: 账号密码认证格式: 2. 各库的代理设置方法 urllib设置代理 requests设置代理 httpx设置代理 httpx Client设置代理 aiohttp设置代理 websocket设置代理 方法一: 方法二: 五、总结 在爬虫开发中,使用代理是提高程序稳定性的重要手段 优质代理能帮助解决IP封禁、访问限制等问题 不同库的代理设置方法有所不同,需注意格式差异 根据实际需求选择合适的代理类型(匿名度、协议支持等)