作者 | 强哥

来源 | Python与数据分析

今天早上登录我的虚拟机,发现速度慢得出奇。每次运行命令,都要等好一段时间才能看到结果。就如 cat 一个文件的内容这种命令,都要等好一会儿。查看 CPU 使用率、内存使用率,都很正常。但查看网络连接的时候,发现有好多人连到我的 3128 端口。

熟悉代理服务器的朋友们知道,3128 是 squid 的默认端口。之前我在虚拟机上配了一个 squid,本来是自己用的,因为没有设用户名密码,这两天被别人扫出来,作为公共的代理被用了。于是我停掉 squid 服务,果然,一下子虚拟机的速度就回复正常了。

但是问题来了,是谁在用我的代理呢?

其实猜也才能猜到,一定是那些代理提供商扫出了我的机器,然后把我的代理提供给他们的用户。我拿我的 IP 去百度了一下,果然发现被一些代理提供商收录了。

进一步深入思考一下,代理提供商是怎么扫到我的代理的呢?

扫代理的原理其实很简单,就是扫描一个网络中的服务器,扫出那些启用代理服务的机器,测试它们是哪种类型的代理(透明代理、匿名代理还是高匿代理),然后代理提供商将这些代理提供给它的客户。

这么想想,其实做一个代理提供商也不是很难。那这样,我们不是自己也可以扫描代理,把资源卖给有需要的客户了?

顺着上面的思路,我整理了一下自己搭建这样一个服务涉及的几个步骤,列了几个关键点。

01 扫描代理服务器

扫端口我们可以用 nmap 这个工具。nmap 是一个网络扫描的工具,它可以用来扫描对方服务器启用了哪些端口、哪些服务,服务器是否在线,以及猜测服务器可能运行的操作系统。

我们针对一台机器运行 nmap 命令,可以扫出这个机器启用了哪些端口(服务),比如

 1$ nmap 49.51.193.128 2 3Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-09 20:32 CST 4Nmap scan report for 49.51.193.128 5Host is up (0.18s latency). 6Not shown: 995 closed ports 7PORT     STATE    SERVICE 822/tcp   open     ssh 925/tcp   filtered smtp10111/tcp  open     rpcbind11445/tcp  filtered microsoft-ds121080/tcp open     socks1314Nmap done: 1 IP address (1 host up) scanned in 27.34 seconds

要扫出一个网段中的代理服务器,我们可以针对一个网段作扫描,如下

1$ nmap 49.51.193.0/24

上面的命令会扫出所有在 49.51.193.0/24 这个网段中有哪些在线的机器,每台机器上启用了哪些服务。

02 检测代理类型

扫出来代理服务器后,我们可以对这些代理服务器做测试,看看它们是什么类型的代理。

代理基本上分成这三种类型:

  • 透明代理

  • 匿名代理

  • 高匿代理

通过字面意思,大致能猜到这三种代理的区别。简单的说,透明代理就是用了之后,对方服务器很清楚的知道你是谁,你来自哪个 IP。匿名代理用了之后,对方没法知道你是谁,但是知道你用了代理。而高匿代理比匿名代理隐藏性更高,对方不仅不知道你是谁,也不知道你用了代理。

三者在技术层面的区别,主要在于 HTTP 请求头的内容不同:

透明代理

1REMOTE_ADDR = Proxy IP23HTTP_VIA = Proxy IP45HTTP_X_FORWARDED_FOR = Your IP

匿名代理

1REMOTE_ADDR = proxy IP23HTTP_VIA = proxy IP45HTTP_X_FORWARDED_FOR = proxy IP

高匿代理

1REMOTE_ADDR = Proxy IP23HTTP_VIA = not determined45HTTP_X_FORWARDED_FOR = not determined

检测代理类型的方法也非常简单,只需要自己搭建一个 web 服务器,在上面跑一个 web 程序。客户端通过代理向 web 服务器发起请求,web 程序打印出请求头,通过分析请求头的内容就可以知道这个代理是哪种类型的。

下面是我用 Flask 写了一个例子,大致是这么个意思

 1import json 2from flask import Flask, request 3app = Flask(__name__) 4 5@app.route('/') 6def hello(): 7    header = {} 8    if "REMOTE_ADDR" in request.headers: 9        header["REMOTE_ADDR"] = request.headers["REMOTE_ADDR"]10    if "HTTP_VIA" in request.headers:11        header["HTTP_VIA"] = request.headers["HTTP_VIA"]12    if "HTTP_X_FORWARDED_FOR" in request.headers:13        header["HTTP_X_FORWARDED_FOR"] = request.headers["HTTP_X_FORWARDED_FOR"]14    return json.dumps(header)1516if __name__ == "__main__":17    app.run(host="0.0.0.0", port=8080)

运行这个程序,当我们通过代理访问这个 web 服务,它就会返回代理请求头的信息,我们可以据此判断代理是透明、匿名还是高匿代理。

03 维护代理池

好,有了代理和代理的类型,我们可以将他们做成一个代理池,提供一个接口给客户,让他们通过接口来获取可用的代理。

当然这些扫出来的代理有效时间长短不一,有的代理也许可以用很久,有的代理可能一会儿时间就失效了。我们需要保证代理池中的代理是有效的,可以定期的去检查代理的有效性,把失效的从列表中去除,把新的有效的加入进来。

当我们做出了这样一个接口后,我们可以把这个接口打包成服务卖给客户,比如按照调用次数收费或者按月收费。

市面上,对于代理池的需求还是很大的,主要是爬虫用户,有些公司也需要爬取竞争对手网站的数据来做分析。用代理池可以避免短时间内请求次数太多而被封掉的情况,当然对于公司来说,除了这方面因素,也想隐藏自己的 IP 来源,不让竞争对手发现自己的意图。

以上是一个爬虫赚钱思路,分享给你。


/今日留言主题/

你用爬虫赚过钱么,或者发现/做过有什么意思的赚钱门路?

(留言格式:Dayxx:blahblah

字数限制:10 字以上.)

一个靠爬虫赚钱的思路相关推荐

  1. python爬虫赚钱的途径-如何用爬虫技术赚钱?

    题主啊,我不知道你爬虫技术是什么水平,但是我觉得只要你能写出正常运行的爬虫就不应该问这种问题. 我做了四年多的爬虫(副业),大大小小做了近百个项目,既然你问了,我就答一波. 首先,你的思路不应该在卖数 ...

  2. 学会python爬虫怎么赚钱-自学python爬虫赚钱经历

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 最后面试的时候,掌握的技能,sql,python,r. 会一点简单的爬虫 ...

  3. python爬虫赚钱途径-如何利用python爬虫挣钱

    Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的抓取和处理,相比于其他语言,Python是一门非常适合开发网络爬虫的编程语言,大量内置包,可以轻松实现网络爬虫功能.那么使用p ...

  4. python爬虫赚钱途径-终于领会python爬虫赚钱的途径

    python爬虫怎么赚钱?python爬虫爬到有价值的数据,进行建模,挖掘就会产生商业价值,下面是小编为您整理的关于python爬虫赚钱的途径,希望对你有所帮助. python爬虫赚钱的途径 Pyth ...

  5. 学会python爬虫怎么赚钱-学会Python爬虫能赚大钱吗?Python爬虫赚钱渠道分享

    学会Python爬虫能赚大钱吗?首先大家要明白这个只是作为一个技术兼职,赚点外快,肯定不比程序员全职工作的工资高.其次赚的多少还要看大家赚钱的渠道.下面小编就和大家分享一下,Python爬虫赚钱渠道, ...

  6. 如何构建一个分布式爬虫:实战篇

    本篇文章将是『如何构建一个分布式爬虫』系列文章的最后一篇,拟**从实战角度**来介绍如何构建一个*稳健的分布式微博爬虫*.这里我*没敢谈高效*,抓过微博数据的同学应该都知道微博的反爬虫能力,也知道微博 ...

  7. 一个Python爬虫工程师学习养成记

    大数据的时代,网络爬虫已经成为了获取数据的一个重要手段. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道 ...

  8. python爬虫分布式怎么构造_如何构建一个分布式爬虫:实战篇

    本篇文章将是『如何构建一个分布式爬虫』系列文章的最后一篇,拟**从实战角度**来介绍如何构建一个*稳健的分布式微博爬虫*.这里我*没敢谈高效*,抓过微博数据的同学应该都知道微博的反爬虫能力,也知道微博 ...

  9. python爬虫都能干什么用_5 行代码就能写一个 Python 爬虫

    欢迎关注我的公众号:第2大脑,或者博客:高级农民工,阅读体验更好. 摘要:5 行代码就能写一个 Python 爬虫. 如果你是比较早关注我的话,会发现我此前的大部分文章都是在写 Python 爬虫,前 ...

最新文章

  1. vue list添加元素_Vue简单入门及组件的简单使用
  2. 20155308郝文菲--第三次作业
  3. ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析
  4. python hack库_常用的Python库
  5. ios客户端做屏蔽_Transmission 屏蔽迅雷反吸血脚本
  6. STM32 FSMC/FMC原理保姆级讲解(一)
  7. 实验六 调用函数 判断素数
  8. 2018上C语言程序设计(高级)作业-第0次作业
  9. MVC +EF+linq 多表联查
  10. 改用MyAnalyzer的KMeans聚类算法
  11. 惊呆了!JDK1.8竟然打破了我对接口的一切认知...
  12. ACM程序设计竞赛开幕式致辞
  13. c语言转化音乐格式转换器安卓版,音频提取格式转换
  14. 一寸照纯红色底图片_一寸照片背景色一般都是什么颜色范文
  15. “无边框”引发口水大战 供应链考验手机硬件创新
  16. 大数据需要学习哪些技术?
  17. 批量打印之smsx.cab打印
  18. 线性代数让我想想:三阶行列式计算优化策略
  19. Nuxt学习(vue项目移植)
  20. 埃森哲董事长兼首席执行官南佩德因健康原因离任

热门文章

  1. 退休的同事去西藏了,我也很想去,是不是对身体素质要求比较高?
  2. 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。
  3. 计算机硬盘正在工作时,让硬盘永远工作在最佳状态
  4. renpy教程-全屏播放视频
  5. C语言家族谱管理系统
  6. svchost进程解惑
  7. MAX232后缀的含义
  8. 生产制造机器设备物联网技术方案
  9. 中国石油大学《化学反应工程》第二阶段在线作业
  10. Docker轻量级图形页面管理之DockerUI