zoukankan      html  css  js  c++  java
  • python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会

     

    我们上次说了伪装头部

     

     

    python爬虫17 | 听说你又被封 ip 了,你要学会伪装好自己,这次说说伪装你的头部

     

    让自己的 python 爬虫假装是浏览器

     

    小帅b主要是想让你知道

     

    在爬取网站的时候

     

    要多的站在对方的角度想问题

     

     

    其实

     

    这和泡妞差不多

     

    你要多站在妹纸的角度思考

     

    她的兴趣是什么

     

    她喜欢什么

     

    而不是自己感动自己

     

    单方面的疯狂索取

     

     

    哦..

     

    扯远了

     

    我们回到反爬虫

     

    这次教你怎么伪装自己的 ip 地址

     

    别让对方轻易的就把你给封掉

     

    如何伪装呢

     

    那么

     

    接下来就是

     

    学习 python 的正确姿势

     

     

     

    其实

     

    对于 python 来说

     

    使用代理访问很简单

     

    就拿我们经常使用的 requests 库来说

     

    使用代理 ip 如下

     

    定义代理IP

     

    proxie = {         'http' : 'http://xx.xxx.xxx.xxx:xxxx',        'http' : 'http://xxx.xx.xx.xxx:xxx',        ....    }  

     

    使用代理

     

    response = requests.get(url,proxies=proxies)

     

    这样就可以使用你定义的代理地址去访问网站了

     

    我知道你要问了

     

    代理地址哪里来

     

     

    在网上有很多免费的代理

     

    随便搜就有一堆了

     

    不过你知道的

     

    免费的话很多人都去使用

     

    所以这些代理IP很不稳定

     

    如果你有钱的话

     

    市面上有人就专门提供代理IP的

     

    直接去买就行了

     

     

    不想花钱呢?

     

    可以搞一个IP代理池

     

    主要就是通过 python 程序去抓取网上大量免费的代理 ip 

     

    然后定时的去检测这些 ip 可不可以用

     

    那么下次你要使用代理 ip 的时候

     

    你只需要去自己的 ip 代理池里面拿就行了

     

     

     

    道理都懂

    但是不想自己弄一个代理池

    有没有现成的?

     

    不瞒你说

    小帅b发现了一个不错的开源 ip 代理池

     

    https://github.com/Python3WebSpider/ProxyPool.git

     

    如何使用呢

     

    首先使用 git clone 将源代码拉到你本地

     

    git clone https://github.com/Python3WebSpider/ProxyPool.git

     

    接着打开项目中的 setting.py

     

    在这里可以配置相关信息

     

    比如 Redis 的地址密码相关

     

    (如果你之前没有使用过 redis 的话,可以到如下地址下载 https://github.com/MicrosoftArchive/redis/releases

     

     

     

    接着在你 clone 下来的文件目录中

     

    安装相关所需的 python 模块

     

    pip3 install -r requirements.txt

     

    接下来开启你的 redis

     

     

    redis 的默认端口就是 6379

     

    接着就可以运行 run.py 了

     

    代理池开始运行 * Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)开始抓取代理获取器开始执行Crawling http://www.66ip.cn/1.html正在抓取 http://www.66ip.cn/1.html抓取成功 http://www.66ip.cn/1.html 200成功获取到代理 201.69.7.108:9000成功获取到代理 111.67.97.58:36251成功获取到代理 187.32.159.61:51936成功获取到代理 60.13.42.154:9999成功获取到代理 106.14.5.129:80成功获取到代理 222.92.112.66:8080成功获取到代理 125.26.99.84:60493...

     

    如果你在运行的时候出现这个错误

    AttributeError: 'int' object has no attribute 'items'

     

    更新一下 redis 版本

     

    pip3 install redis==2.10.6 

     

    运行 run.py 

     

    这时候在你的 redis 中就有爬取到的代理 ip 了

     

     

    项目跑起来之后

     

    你就可以访问你的代理池了

     

    比如随机获取一个代理 ip 地址

     

    http://localhost:5555/random

     

    这样访问之后就会获取到一个代理 ip

     

    在代码中获取代理也不在话下啦

     

    import requests
    PROXY_POOL_URL = 'http://localhost:5555/random'
    def get_proxy(): try: response = requests.get(PROXY_POOL_URL) if response.status_code == 200: return response.text except ConnectionError: return None

     

     

     

    这样

     

    我们就成功的在我们的代理池中获取代理 ip 了

     

    那么下次谁还敢封你ip

     

    你就拿出你的代理ip

     

    继续爬呗

     

     

    peace

     

    帅b老仙

    法力无边

     

     

     

  • 相关阅读:
    LINUX监控一:监控命令
    Kettle并行
    KETTLE集群搭建
    Solr报错Index locked for write for core '***'. Solr now longer supports forceful unlocking via 'unlockOnStartup'
    Solr json,xml等文件数据导入(添加索引)linux下操作
    python对solr进行查询、插入操作(GETPOST)
    Solr-5.3.1 dataimport 导入mysql数据
    解决MySQL数据导入报错Got a packet bigger than‘max_allowed_packet’bytes
    解决防火墙限制远程连接MySQL(导致错误10060可能之一)
    gensim加载word2vec训练结果(bin文件)并进行相似度实验
  • 原文地址:https://www.cnblogs.com/fxxkpython/p/10832240.html
Copyright © 2011-2022 走看看