用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访问绕开反爬机制?

于是就有了下图。

一次敏感代码爬取的流程:

  1. Github爬虫引擎发起一次爬虫请求
  2. 请求发送到负载均衡Nginx,Nginx将请求按照同权重的方式转发到流量转发Nginx

    注:负载均衡Nginx设置为两台,防止出现单点故障。

  3. 收到负载均衡Nginx发过来的流量,流量转发Nginx将请求转想github.com

  4. github.com返回的内容通过Nginx原路返回给Github爬虫引擎

这样,对于github.com而言,他看到的是三台机器在一样频率的交替访问,频率是原先的1/3,巧的是,这个频率就不会触发反爬机制。从而实现了Github爬虫引擎的连续访问,效率大大提升。

同时,这套方案的扩展性还很强,如果再次被github.com反爬机制封锁,可以通过平行加流量转发Nginx机器的方式来实现水平扩展。

附负载均衡Nginx的核心配置:

附流量转发Nginx的核心配置:

0x04 携程SAAS平台


现在,该服务已经上线到携程云安全了,欢迎大家试用:https://security.ctrip.com/

最新文章

  1. 使用Hibernate的 isNotEmpty( ) 方法 报错: No result defined .... and result dataAccessFailure
  2. B窗体继承于A窗体,B启动:问题点
  3. JDBC连接执行MySQL存储过程报权限错误
  4. leetcode刷题总结一
  5. 关于MemoryBarrier
  6. 在VirtualBox虚拟机上采集Fedora15系统
  7. decimal类型不能为空,自定义update更新null值的问题。
  8. python修炼6
  9. C# 提前异步加载数据
  10. Diagnostics: File file:/tmp/spark-95cbb984-da28-4784-8b99-eb83ad74437f/__spark_libs__1421840316395076250.zip does not exist
  11. Service,测试
  12. 完全背包记录路径poj1787 好题
  13. jsp----标签编程(JSTL)
  14. vc2005(visual studio)使用习惯记录
  15. linux安装xgboost
  16. paramiko远程
  17. ssh整合(dao使用hibernateTemplate)
  18. struts2之文件上传
  19. 字母数字、字母、汉字验证码 (java)
  20. Mac标识物理位置算法 import Levenshtein mac列表特征值

热门文章

  1. 9款最佳的Linux文件比较工具
  2. P2605 [ZJOI2010]基站选址
  3. SSL身份认证原理 - 目标: 搞清楚数字证书和数字签名的关系
  4. c# base64算法解密
  5. 【刷题】BZOJ 1969 [Ahoi2005]LANE 航线规划
  6. 九省LNOI2018退役记
  7. 洛谷 P3698 [CQOI2017]小Q的棋盘 解题报告
  8. 【bzoj2594】 Wc2006—水管局长数据加强版
  9. Android Studio下“Error:Could not find com.android.tools.build:gradle:2.2.1”的解决方法
  10. SpringCloud微服务实战-Zuul-APIGateway(十)