每日爬虫练习:多线程代理IP池实战(抓取、清洗)

本文介绍了如何使用Python实现多线程爬取并清洗快代理的高匿IP,通过验证确保可用性,以应对网站的反爬策略。在实践中,作者分享了遇到的挑战,如HTTP头部大小写问题、协议不匹配以及代理IP验证策略的选择。
摘要由CSDN通过智能技术生成

一、前言

2020-04-04日爬虫练习
每日一个爬虫小练习,学习爬虫的记得关注哦!

学习编程就像学习骑自行车一样,对新手来说最重要的是持之以恒的练习。
在《汲取地下水》这一章节中看见的一句话:“别担心自己的才华或能力不足。持之以恒地练习,才华便会有所增长”,现在想来,真是如此。

二、需求:

分页爬取快代理国内免费高匿IP,并对IP进行清洗验证,将可用的IP储存到本地

三、IP代理池设计

3.1 意义

学习爬虫,离不开高频访问(请求),现在很多网站为了抵御爬虫,设置防爬措施,对频繁访问的IP要求重新登录,或者或跳转至一个带有滑块验证的页面,要求用户登录或拖动滑块。目前对于反爬措施中IP限制,使用动态IP代理访问还是可行的。

3.2 IP代理科普

IP代理有透明代理、匿名代理、混淆代理和高匿代理。这四种代理,主要是代理服务器端的配置不同,导致其向目标地址发送请求时,REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR三个变量不同。

一:透明代理(Transparent Proxy)

REMOTE_ADDR=Proxy IP

HTTP_VIA=Proxy IP

HTTP_X_FORWARDED_FOR=Your IP

透明代理虽然可以直接”隐藏”你的IP,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。

二:匿名代理(Anonymous Proxy)

REMOTE_ADDR=Proxy IP

HTTP_VIA=Proxy IP

HTTP_X_FORWARDED_FOR=Proxy IP

匿名代理比透明代理进步一点:别人只能知道你用了代理,无法知道你是谁。

三:混淆代理(Distorting Proxies)

REMOTE_ADDR=Proxy IP

HTTP_VIA=Proxy IP

HTTP_X_FORWARDED_FOR=Random IP address

与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真

四:高匿代理(High Anonymity Proxy)

REMOTE_ADDR=Proxy IP

HTTP_VIA=not determined

HTTP_X_FORWARDED_FOR=not determined

使用高匿代理,能让别人根本无法发现你是在用代理,所以是最好的选择。

3.3 技术路线

1.requests
2.BeautifulSoup
3.threading.Thread # 多线程

3.4 设计思路

  1. 目前网上有很多免费的代理IP,不过这种免费代理IP都不稳定,获取到的免费IP都得通过清洗(检测)是否可用。
  2. 本博文爬取的是快代理IP的国内高匿IP:https://www.kuaidaili.com/free/
  3. 由于清洗代理,时间大都花在网络请求上了,个人试了下多线程爬取,速度有很大提升。

3.5 实战过程中遇到的问题

1.由于快代理的HTTP 是大写,直接进行 requests请求的时候, requests请求可以成功,但是请求使用的将会是你真实的ip地址 ,所以得进行大小写转换。
2. 如果爬取到的代理IP协议是https,在访问http网站时,requests请求可以成功,但是请求使用的将会是你真实的ip地址
3. 一开始使用http://icanhazip.com/网站进行验证,如果正常ip,它返回值的text,将会是你请求IP,但是它对80,8080等一些特殊端口不友好,无法做到正确验证,而且响应速度慢,特别影响效率。
4. 使用https://www.baidu.com/进行验证有两个好处,
----百度支持http和https,所以两个协议都能使用代理IP进行正常访问
----百度请求和响应速度特别快,如果状态码为200,那就说明代理ip有效,能起到快速清洗效果

ps:这是我爬虫实战过程中遇到的问题,觉得有帮助的给个赞吧!

四、快代理高匿IP爬取清洗实战:

'''

 爬取快代理IP,建设自己的爬虫代理池
 version:01
 author:金鞍少年
 date:2020-04-04
'''

import requests
from bs4 import BeautifulSoup
import time
from threading import Thread

class Douban:

    de
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值