国内免费ip代理(国内代理ip软件)

大家好,我是强哥。这几天鬼刃游郭就要上线了,强哥的一个朋友很喜欢鬼刃,可以说是痴迷了。每次新文章上线都会第一时间看。虽然这家伙这次上线之前已经看过了,但是这个消

大家好,我是强哥。

这几天鬼刃游郭就要上线了,强哥的一个朋友很喜欢鬼刃,可以说是痴迷了。每次新文章上线都会第一时间看。虽然这家伙这次上线之前已经看过了,但是这个消息还是让他很激动,让我和他一起重温一下。

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

不是,昨天被人要了一个爬虫代码,我就去网上搜了各种跟幽灵之刃有关的图片。可是,我把代码给他不到一个小时,这家伙又跑到我面前破口大骂,说他用了我的代码。起初,他爬得相当好,非常舒服。但是过了近半个小时,发现有两个网站他经常看图片,爬不上图。而且没有软件,他用电脑浏览器也无法访问这两个网站,这让他很生气。

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

我赶紧给这家伙讲了一些关于爬行动物的法律知识。爬行动物虽然好到可以解放我们的双手,但是它们太凶猛了,不能被请去喝茶。几年前,一家公司的CTO和程序员被抓判刑。所以还是要控制频率,不要无节制...

他讲了道理,现在又想继续。他该怎么办?没办法,我们得找经纪人。这家伙是一个化石白嫖党,所以他没有办法支付它。强哥要牺牲自己。

IP代理池

没错。要解决这个问题,最简单易行的使用方法就是IP代理池,即获取大量可以正常使用的代理IP。那么我们在使用爬虫的时候,并不是直接把请求发送到目标网站,而是通过代理IP,先把请求发送到代理服务器,代理服务器会帮我们把请求发送到目标网站。这样的话,如果被目标网站发现,代理商封的IP就不是我们自己的IP了。

至于为什么需要使用代理池,主要是怕同一个代理IP被屏蔽,然后就不能再访问了。最好是绰绰有余。

代理池

因为我们想要白嫖,我们必须寻找开源项目。既然要找开源项目,就要足够专业,匹配强哥的代码。所以,这一次的主角是崔的开源项目:ProxyPool,Python3网络爬虫开发实践的作者。

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

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

代理池分为四个部分:采集模块、存储模块、检测模块和接口模块。

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

该项目的原理是,只有在提供IP代理池的网站获得IP,然后测试和使用该程序后,IP才会被保存供我们使用,这相当于节省了我们寻找免费IP代理的时间。

当然,如果只是为了使用,不用太在意这些细节,我们就直说了。

开始

代理需要在本地运行。运行后会在本地公开一个接口地址:http://localhost:5555/random。您可以通过直接访问获得随机可用的代理IP。

用Docker下载完项目图片后,我用docker-compose up命令启动了服务,然后浏览器访问效果如下:

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

没错,归还的120.196.112.6:3128就是代理IP。

Docker图像下载方法:

docker pull germey/proxypool

我也想交一波朋友。自己去GitHub上看看。用起来还是很简单的:https://github.com/Python3WebSpider/ProxyPool.

如何帮助朋友?

现在工具已经有了,只要把我之前给朋友的爬虫代码拿来,把代理池放上去就行了。当然,我不会在这里直接暴露我的爬虫代码。给我一个官方的样本代码,和我写的差不多:

import requestsproxypool_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).textdef 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直接发送给代理。

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

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

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

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

使用上述代理代码访问的效果:

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

如您所见,返回的原点确实使用了代理IP。换句话说,我们的IP代理池已经被成功使用。

我的强朋友得到了新的爬虫代码,并控制了频率。终于不再被IP封杀了。对了,你给我发了一张照片:

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

怎么说呢?你这种不咬竹子的豆子不是好豆子。

深入一点。

除了crawler之外,还会在哪里使用IP代理池?

嗯...如果看过强哥上一篇文章的朋友应该能猜到,当然是DoS攻击。其实爬虫和DoS攻击在某些地方还是有交集的。如果爬虫控制不好,很可能会变成DoS。这个我就不多展开了。

强哥前天看了一个DoS攻击项目,利用反射原理进行攻击。哈哈,之前看DoS攻击方法介绍的时候了解到的。这次看到代码还挺激动的,有机会给大家介绍一下。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/17297.html

发表回复

登录后才能评论