使用代理以及搭建代理池

一、使用代理

如果使用自自身IP地址访问,很有可能被封IP,以后就访问不了了
那如何解决呢?我们可以使用代理IP(代理:)

设置超时,请求参数加上timeout=时间即可
异常处理:用try except 包一下即可
上传文件:虽然爬虫没有上传文件的需求
但是后期在开发过程中需要批量上传文件,这个时候需要requests模块处理
换句话说应用场景

高匿名代理和透明代理
高匿名代理:服务端拿不到真实客户端的IP地址
透明代理:能够拿到真实客户端的IP地址。也能拿到代理

使用高匿名代理时候,如何拿到真实客户端的IP地址?在请求头中有一个参数叫X-Forward-For:''

import requests
proxies={'http':'60.167.91.34:33080'}
proxies={
    'http':'27.79.236.66:4001'
}
res = requests.post('https://wwww.cnbolgs.com',proxies=proxies)
print(res.status_code)
'上传文件'
import requests
files = {'file': open('美女.png', 'rb')}
respone = requests.post('http://httpbin.org/post', files=files)
print(respone.status_code)
'异常处理'
import requests
#可以查看requests.exceptions获取异常类型
from requests.exceptions import * 

try:
    r=requests.get('http://www.baidu.com',timeout=0.00001)
except ReadTimeout:
    print('===:')
except RequestException:
    print('Error')
'超时设置'
import requests
respone=requests.get('https://www.baidu.com',timeout=0.0001)

二、代理池搭建

  1. 访问搭建免费的代理池>>> https://github.com/jhao104/proxy_pool

  2. 下载zip文件到本地再解压之后再pycharm打开

  3. 单独给该项目创建虚拟环境
    image

  4. 安装依赖

pip install -r requirements.txt
  1. 修改配置
DB_CONN = 'redis://127.0.0.1:6379/0'
  1. 启动爬虫程序
python proxyPool.py schedule
  1. 启动服务端
python proxyPool.py server
  1. 使用随机免费代理
在浏览器地址栏中搜索http://127.0.0.1:5010/get/

image
可以获取随机免费代理IP,到此自己搭建代理池结束了。

三、使用随机代理发送请求

import requests
from requests.packages import urllib3

urllib3.disable_warnings()  # 关闭警告

res = requests.get('http://127.0.0.1:5010/get/').json()  # 获取代理
proxies = {}
if res['https']:
    proxies['https'] = res['proxy']
else:
    proxies['http'] = res['proxy']
print(proxies)
res = requests.post('https://www.cnblogs.com', proxies=proxies, verify=False)
print(res)

开多线程的脚本

from threading import Thread
import requests


def task():
    res = requests.get('http://101.43.19.239/')
    print(res.text)


for i in range(10000000):
    t = Thread(target=task)
    t.start()
posted @ 2023-03-17 14:55  阿丽米热  阅读(322)  评论(0编辑  收藏  举报
Title