用Nginx分流绕开Github反爬机制
用Nginx分流绕开Github反爬机制
0x00 前言
如果哪天有hacker进入到了公司内网为所欲为,你一定激动地以为这是一次蓄谋已久的APT,事实上,还有可能只是某位粗线条的员工把VPN信息泄露在了Github上恰巧被一个好奇的计算机junior发现了而已。
0x01 意识缺失
先贴张图:
有记者给溧阳卫生局局长拨通电话,该局长面对记者的采访慌张答道:
“你看到我们发微博的啊?呵呵,你怎么看到的啊?这个都能看得到啊?!这不可能吧?我们两个发微博你都能看得到啊?不可能吧?”……
同样,互联网企业的员工流动性很强,各自的安全(隐私)意识也参差补齐。庞大的企业难免有些人由于无知或由于偷懒把含有敏感信息(如数据库连接串,邮箱账号,VPN信息)的代码直接丢到github上去。如果这些信息被有心人看到了,那就能让黑客花最小的成本,达到APT的效果了。
另附一篇漏洞盒子关于github泄露企业机密信息的报告:
https://www.vulbox.com/news/detail-15
0x02 反爬机制
于是,我们想实现github代码的监控,定制诸多关键词如password,mysql,account,email,希望通过爬虫程序来实现对github上敏感代码的监控,如果有可疑信息泄露,程序通过邮件通知负责人,负责人去进行二次人工审核。这样,能在第一时间发现敏感代码的泄露,并及时联系提交者进行处理。
期望是美好的,但是在连续高频访问若干次github.com之后:
触发了github的反爬机制,难道项目要流产?
0x03 绕开
机智的楼主想起之前团队购买了5台阿里云机器,何不用阿里云机器搭建一套代理实现分IP访问绕开反爬机制?
于是就有了下图。
一次敏感代码爬取的流程:
- Github爬虫引擎发起一次爬虫请求
请求发送到负载均衡Nginx,Nginx将请求按照同权重的方式转发到流量转发Nginx
注:负载均衡Nginx设置为两台,防止出现单点故障。
收到负载均衡Nginx发过来的流量,流量转发Nginx将请求转想github.com
github.com返回的内容通过Nginx原路返回给Github爬虫引擎
这样,对于github.com而言,他看到的是三台机器在一样频率的交替访问,频率是原先的1/3,巧的是,这个频率就不会触发反爬机制。从而实现了Github爬虫引擎的连续访问,效率大大提升。
同时,这套方案的扩展性还很强,如果再次被github.com反爬机制封锁,可以通过平行加流量转发Nginx机器的方式来实现水平扩展。
附负载均衡Nginx的核心配置:
附流量转发Nginx的核心配置:
0x04 携程SAAS平台
现在,该服务已经上线到携程云安全了,欢迎大家试用:https://security.ctrip.com/
用Nginx分流绕开Github反爬机制的更多相关文章
- 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...
- python爬虫---CrawlSpider实现的全站数据的爬取,分布式,增量式,所有的反爬机制
CrawlSpider实现的全站数据的爬取 新建一个工程 cd 工程 创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com 连接提取器Link ...
- python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题
python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述 通过编写程序'模拟浏览器'上网,然后通 ...
- Python爬虫实战——反爬机制的解决策略【阿里】
这一次呢,让我们来试一下"CSDN热门文章的抓取". 话不多说,让我们直接进入CSND官网. (其实是因为我被阿里的反爬磨到没脾气,不想说话--) 一.URL分析 输入" ...
- python爬虫破解带有RSA.js的RSA加密数据的反爬机制
前言 同上一篇的aes加密一样,也是偶然发现这个rsa加密的,目标网站我就不说了,保密. 当我发现这个网站是ajax加载时: 我已经习以为常,正在进行爬取时,发现返回为空,我开始用findler抓包, ...
- 破解另一家网站的反爬机制 & HMAC 算法
零.写在前面 本文涉及的反爬技术,仅供个人技术学习,禁止并做到: 干扰被访问网站的正常运行 抓取受到法律保护的特定类型的数据或信息 搜集到的数据禁止传播.交给第三方使用.或者牟利 如有可能,在爬到数据 ...
- selenium反爬机制
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- 小白突破百度翻译反爬机制,33行Python代码实现汉译英小工具!
表弟17岁就没读书了,在我家呆了差不多一年吧. 呆的前几个月,每天上网打游戏,我又不好怎么在言语上管教他,就琢磨着看他要不要跟我学习Python编程.他开始问我Python编程什么?我打开了我给学生上 ...
- 二十八 Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
cookie禁用 就是在Scrapy的配置文件settings.py里禁用掉cookie禁用,可以防止被通过cookie禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie禁用后是无法登录的 ...
随机推荐
- equals比较对象
object类的equals方法用来比较是否是同一个对象,比较内存地址. jdk中有些类重写了equals方法,只要类型,内容相同,就相等. 类如果涉及到比较应该重写equals方法,比较内存地址没有 ...
- angular 调用element的 onfocus onkeydown onblur等事件
项目里要实现一个input验证通过就切换到下一个input的功能 当然用jq dom操作很简单 ,大家都懂,现在用 angular,mvc 数据模型控制分离,不想再dom操作怎么办 以下方法 < ...
- Zookeeper的基础
认识Zookeeper zookeeper是什么 分布式数据的一致性解决方案. Zookeeper 能做什么 数据发布和订阅(配置中心,config,disconf,diamond,appollo) ...
- java 对象的解释过程
- QString,string,char* 在utf8和gbk不同编码下的相互转化
关于编码简介:ascii编码是最开始的编码规则本,里面只收纳了英文.特殊字符.数字等有限字符,采用的是8位一个字节的方式进行编码对照:unicode在ascii码的基础上进行了升级扩展,立志将全世界所 ...
- C++模式学习------工厂模式
工厂模式属于创建型模式,大致可以分为简单工厂模式.抽象工厂模式. 简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品. enum PTYPE { ProdA = , ProdB = ...
- c++11 继承构造
c++11 继承构造 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #includ ...
- python中OS模块操作文件和目录
在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...
- 【刷题】BZOJ 4817 [Sdoi2017]树点涂色
Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义一条路 径的权值是:这条路径上的点(包括起点和终点)共有多少种不同的颜色. ...
- BZOJ 3527 力 | FFT
BZOJ 3527 力 | 分治 题意 给出数组q,$E_i = \sum_{i < j} \frac{q_i}{(i - j) ^ 2} - \sum_{i > j} \frac{q_i ...