IP被封了,朋友让我帮忙下载……

简介: 没错,要解决这个办法,最简单好用的就是IP代理池了,也就是搞到一大堆的可正常使用的代理IP,然后我们用爬虫的时候,请求不直接发送到目标网站,而是借助代理IP,把请求先发到代理服务器,代理服务器再帮我们把请求发送到目标网站。这样,假如被目标网站发现了,封的也是代理的IP不是我们自己的IP啦。

哈喽,大家好,我是强哥。


这几天,鬼灭之刃游郭篇就要上线了,强哥的一个朋友非常喜欢鬼灭之刃,可以说是到了痴迷的地步。每次新篇上线都会第一时间观看。虽然这次上线之前,这家伙就已经看过了,不过这消息还是把他激动的不行,拉着我要我和他重温一遍。


这不,昨天,还找我要了个爬虫代码,去网上搜刮各种鬼灭之刃相关的图片。


可是,在我给他代码后不到一个小时,这家伙就又骂骂咧咧的跑过来找我算账了,说用了我的代码,刚开始爬得还挺好,很舒服。可是过了将近半小时,就发现,有两个他经常看图的网站爬不到图片了。而且,不用软件,自己用电脑浏览器也没法访问这两个网站了,这让他非常恼火。


听了他这么一说,我就大概明白了个十有八九,应该是爬的有点凶IP被封了。用手机5G网络看了下对应的网站,确实还是可以正常访问,那就没错了。


赶紧和这家伙说了一些爬虫相关法律知识,爬虫虽好可以解脱我们的双手,可是爬的太凶容易被请喝茶。前几年不是还有个公司的CTO和程序员被抓判刑了吗。所以自己还是要控制好频率,不要没有节制……


大道理讲了一通,可是,现在他还想继续下怎么办呢?没办法,只好找找代理了,这家伙又是化石白嫖党,让他出钱是没办法了,强哥只好自己祭出大招了。


IP代理池


没错,要解决这个办法,最简单好用的就是IP代理池了,也就是搞到一大堆的可正常使用的代理IP,然后我们用爬虫的时候,请求不直接发送到目标网站,而是借助代理IP,把请求先发到代理服务器,代理服务器再帮我们把请求发送到目标网站。这样,假如被目标网站发现了,封的也是代理的IP不是我们自己的IP啦。


至于为什么要用到代理池,主要还是怕老用同一个代理IP被封了就又没法访问了,多搞几个宁滥毋缺嘛。


ProxyPool


既然要白嫖,那必须找找开源项目。既然要找开源项目,那必须要够专业的才配得上强哥的代码。所以,这次的主角是《Python3网络爬虫开发实战》的作者崔庆才的开源项目:ProxyPool。


先简单介绍下项目结构吧:


11.png


代理池分为四个部分,获取模块、存储模块、检测模块、接口模块。


  • 存储模块使用 Redis 的有序集合,用以代理的去重和状态标识,同时它也是中心模块和基础模块,将其他模块串联起来。
  • 获取模块定时从代理网站获取代理,将获取的代理传递给存储模块,保存到数据库。
  • 检测模块定时通过存储模块获取所有代理,并对其进行检测,根据不同的检测结果对代理设置不同的标识。
  • 接口模块通过 Web API 提供服务接口,其内部还是连接存储模块,获取可用的代理。


项目原理是在各大提供IP代理池的网站把IP搞过来然后程序测试能用之后,才会存下来供我们使用,相当于帮助我们省去了找免费IP代理的时间。


当然,如果只是拿来用,也不用过多的在意这些细节,我们直接冲。


上手


ProxyPool需要本地运行起来,运行起来后,会在本地暴露一个接口地址:http://localhost:5555/random


直接访问即可获取一个随机可用代理IP。


强哥用Docker方式下载项目镜像后,用docker-compose up命令把服务运行起来了,然后浏览器访问效果如下:


12.png


没错,返回的120.196.112.6:3128就是代理IP啦。


Docker镜像下载方式:


docker pull germey/proxypool


也想搞一波的小伙伴,自己到GitHub上看看吧,用起来还是很简单的:https://github.com/Python3WebSpider/ProxyPool


怎么帮朋友


既然工具有了,就把之前我给朋友的爬虫代码拿过来,把代理池怼上去就行了。当然,这里就不直接暴露我的爬虫代码了,给一个官方示例代码吧,和我写的也差不多:


import requests
proxypool_url = 'http://127.0.0.1:5555/random'
target_url = 'http://httpbin.org/get'
def get_random_proxy():
    """
    get random proxy from proxypool
    :return: proxy
    """
    return requests.get(proxypool_url).text.strip()
def crawl(url, proxy):
    """
    use proxy to crawl page
    :param url: page url
    :param proxy: proxy, such as 8.8.8.8:8888
    :return: html
    """
    proxies = {'http': 'http://' + proxy}
    return requests.get(url, proxies=proxies).text
def main():
    """
    main method, entry point
    :return: none
    """
    proxy = get_random_proxy()
    print('get random proxy', proxy)
    html = crawl(target_url, proxy)
    print(html)
if __name__ == '__main__':
    main()


可以看到,用到代理的方式关键就是这句:requests.get(url, proxies=proxies),直接把获取到的代理IP搞到proxies去就行了。


这里还要提到代码中用到的另一个开源项目的地址,对,就是http://httpbin.org/get,我们可以根据这个地址返回的数据判断我们发起访问该地址的IP。


强哥直接用浏览器访问的效果:


14.png


可以看到这里用了本地IP。


换用上面的代理代码访问的效果:


13.png


可以看到,返回的origin确实使用了代理IP。也就是说,我们的IP代理池使用成功了。

强哥朋友在拿到新的爬虫代码,并进行了频率的节制,终于不再怎么被封IP了。


怎么说呢?没咬竹子的祢豆子不是好豆子。


搞更深点


IP代理池这玩意除了用在爬虫上还会被用在哪呢?


嗯……如果看了强哥上篇文章的小伙伴应该能猜到,当然是DoS攻击了,其实爬虫和DoS攻击,在某些地方还是有交集的,爬虫控制的不好很可能就成了DoS。这个就不做过多扩展了。


强哥前天还看了个DoS攻击的项目,用到了反射原理来进行的攻击,哈哈,之前都是看DoS攻击方式介绍的时候有了解到,这回看到代码还挺激动,有机会和大家也介绍下。

相关文章
|
网络协议
校园网进不去B站/CSDN怎么办?一招搞定
校园网进不去B站/CSDN怎么办?一招搞定
1331 0
|
安全 网络安全
QQ上不了,下载慢,先不要慌,先看看是不是华为防火墙上做了手脚
QQ上不了,下载慢,先不要慌,先看看是不是华为防火墙上做了手脚
168 0
|
缓存 网络安全 数据安全/隐私保护
常用抓密码方法整理
常用抓密码方法整理
2432 0
|
缓存 前端开发 开发者
分分钟学会 F12 抓包图文教程
​ 一、步骤 1)打开浏览器(本文以谷歌浏览器为例) 2)按“F12”或者鼠标右键选择“检查”,点击右上角的“设置”小齿轮图标,英文切换中文,具体如下图所示(此步骤和接下来的3)为浏览器控制台为英文状态下的设置,若已设置为中文可跳过此步骤和3)步骤) 3)点击右上角“X”关闭图标按钮,关闭浏览器控制台,再次进入开发者选项(F12或者右键检查),此时浏览器控制台界面语言从英文变成中文页面,如下图所示 二、Tabs介绍 1)切换到网络tab下 第一个按钮:停止和开启按钮,默认是开启抓包 第二个按钮:清空抓包记录 第三个按钮:过滤器,可以通过搜索想要的关键字 第四个按钮:保留日
1005 0
|
网络协议 Linux 文件存储
只需一招,即使没有公网IP,也让你的WordPress博客面向全世界!
只需一招,即使没有公网IP,也让你的WordPress博客面向全世界!
|
网络协议 网络架构
小白必知必会的几个IP地址知识
1.IP地址的定义 IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制方式被处理。然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换为十进制数。下面举例说明这一方法。
340 1
小白必知必会的几个IP地址知识
|
搜索推荐 SEO
网站为什么被封?网站被封原因
在搜索引擎输入:site:你的域名(如:site:www.fgba.net)搜索结果是:抱歉,没有找到与“site:www.fgba.net” 相关的网页。 对于曾经被收录过的网站,出现这样的情况,我们认为这个网站被封了。 到目前没有一个全能的办法来解决所有网站被封的问题,我们采用排除法来解决这个问题。 网站为什么被封
670 0
|
Web App开发 存储 前端开发
一键分析你的上网行为,看看你平时上网都在干嘛?
  简介   想看看你最近一年都在干嘛?看看你平时上网是在摸鱼还是认真工作?想写年度汇报总结,但是苦于没有数据?现在,它来了。   这是一个能让你了解自己的浏览历史的Chrome浏览历史记录分析程序,当然了,他仅适用于Chrome浏览器或者以Chrome为内核的浏览器。   在该页面中你将可以查看有关自己在过去的时间里所访问浏览的域名、URL以及忙碌天数的前十排名以及相关的数据图表。   部分截图   一键分析你的上网行为,看看你平时上网都在干嘛?
127 0
|
存储 网络协议 安全
朋友阿里面试题之 TCP/IP,回去等通知吧
最近和一同学聊天,他想换工作,然后去面了一家大厂。当时,他在简历上写着精通TCP/IP,本着对TCP协议稍有了解,面试官也不会深问的想法,就写了精通二字。没想到,大意了.
朋友阿里面试题之 TCP/IP,回去等通知吧