央行征信爬虫解决方案

news/2024/7/19 10:37:59 标签: 爬虫, python, java

笔者所在公司是一家互联网金融公司,其中最大的一块业务就是贷款。当一个用户向我们申请贷款时,我们需要用户授权获取用户的征信数据,然后将数据交给风控规则引擎生成一份数据报告,凭借这份数据报告来判断是否可以给这个用户放贷。

其中获取用户征信数据这一步就是用爬虫来实现的。爬虫的应用领域非常广泛,技术手段也是五花八门。本文主要以央行征信报告为爬取目标,讲解三种爬虫的技术解决方案。

方案一:基于接口的爬虫

技术栈:

  • nodejs
  • request
  • cheerio

优点:

  • 流程简单
  • 支持并行爬取
  • 响应速度快
  • 对环境没有特殊要求

缺点:

  • 需要手动维护用户cookie
  • 方案不可用

补充:

这个方案其实本来是最佳方案。但后来央行征信改版,登录页密码框改用ActiveX控件来加密用户密码。纯接口的方式无法通过央行征信的登录验证,所以该方案现在已经不可用了。

方案二:基于浏览器的爬虫

技术栈:

  • nodejs
  • selenium
  • winio
  • jquery

优点:

  • 可通过央行征信的登录验证
  • 不需要维护用户cookie

缺点:

  • 依赖IE浏览器环境
  • 响应速度慢
  • 不支持并行爬取
  • 驱动级键盘输入不稳定

补充:

由于ActiveX控件只能在IE浏览器中才能加载,所以爬虫程序必须部署在windows机器上,也就是图中的worker机。另外,ActiveX控件的密码无法通过代码直接复制,必须依赖驱动级键盘输入来输入用户密码。

方案三:基于浏览器+接口的爬虫

技术栈:

  • nodejs
  • selenium
  • winio
  • request
  • cheerio

优点:

  • 可通过央行征信的登录验证
  • 响应速度快
  • 支持并行爬取

缺点:

  • 依赖IE浏览器环境
  • 驱动级键盘输入不稳定
  • 需要部署多台worker机
  • 流程复杂
  • 需要手动维护用户cookie

补充:

该方案其实是结合了方案一和方案二的优点。worker机用来加载ActiveX控件,输入用户密码,获取加密后密码后返回给爬虫服务端。剩下的流程就都和方案一相同。

代理优化

央行征信有反爬机制,如果同一个IP登录了很多个用户,这个IP就有可能被封。所以爬虫程序需要加代理IP来提升稳定性和成功率。这个问题其实挺好解决的,花钱买一个代理IP服务就好了。

但是代理IP服务商的质量参差不齐,服务好的价格贵,便宜的又不稳定。如果你像笔者一样,只能申请到像太阳代理这样的渣渣代理。那我这里给你提供一个思路,提升渣渣代理服务的稳定性。

写一个定时任务,每隔一段时间就获取一次IP,每次取n个。然后分别用这些个IP去请求央行征信的登录页,如果1秒内成功响应,就把这个IP存到IP池里,否则就丢弃。

通过定时任务维护一个高质量的IP池,可以极大地提升爬虫的稳定性和成功率。

其他

以上三种方案以及代理优化方案,都在笔者所在公司生产环境使用过。实际使用的技术栈和文中列举的有所出入。文中的技术栈是我事后总结觉得最佳的技术方案。今后我会抽时间重构方案三的代码,然后开源到github。


http://www.niftyadmin.cn/n/1556417.html

相关文章

编程入门:C语言基础知识全网超全不用到处找了! ...

你背或者不背,干货就在那里,不悲不喜 你学或者不学,编程就在那里,不来不去 听到这话的你是否略感扎心? 01基础知识 计算机系统的主要技术指标与系统配置。计算机系统、硬件、软件及其相互关系。微机硬件系统的基本组成…

记录Nginx代理的配置

server { listen 80; server_name localhost; location / { root /ect/share/nginx/html; index index.html index.htm; } #反向代理设置test.html跳转到http:xxxx:xx/test.html location ~/test.html$ { proxy_pass http://代理地址; proxy_redirect default; proxy_set…

云服务器能干什么

服务器是啥?就是一个24小时不断电的电脑,有linux系统,windows2003-2013,你可以用他来挂qq,挂软件,挂一切你想挂的,除了游戏,因为他本身是用来为大家提供远程信息处理服务的&#xff…

C 语言 变量的赋值和初始化

C 语言 变量的赋值和初始化 根据我所了解和理解: int i 当定义一个这样的变量的时候,计算机将在内存中给变量分配空间,此时 i 的值为,此处空间内原来是什么现在还是什么,相当于打开一个房间,你没有清扫它你就住进去…

一个SQL无法kill掉的案例

一个SQL无法kill掉的案例 问题描述 因为业务需要,客户有一个ddl需求扩展某一drds单表的列的长度,但是在drds上执行ddl的时候被一个select阻塞mdl(metadata lock)锁,详情见官方文档8.11.4 Metadata Locking。报错以及SQ…

httpd源码安装过程

1.先装编译器 命令为 yum install gcc gcc-c2.yum install expat-devel(XML解析)3.上网找 apr apr-util pcre 源码包下载wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz (apr)wget http://mirrors.tuna.tsinghua.edu.cn/apache…

坚果云增量同步帮你轻松应对要甲方爸爸

我的身边有很多设计的朋友。 我聊了聊,每个人都受到甲方爸爸的折磨。有一次,我打电话给我的朋友,我很久没有见到他了。当我接通电话时,我听到一种疲惫的声音,这与“半死不活”状态类似。当我问起时,他告诉我…

喧喧发布 2.5.3 版本,主要提升系统稳定性,优化交互体验

开发四年只会写业务代码,分布式高并发都不会还做程序员? 喧喧是由然之协同团队推出的一款轻量级的开源企业聊天软件。提供企业内部通讯交流、企业通讯录、协同办公通讯交流、企业IM解决方案。 喧喧官网: https://xuan.im/ 大家好&#xff0…