ip代理(十)之玩转开源代理服务器LightWeightProxyServer(后端项目讲解)

前言

LightWeightProxyServer后端项目讲解,这里会挑最核心,最重要的部分进行讲解,基础的部分就当你会,不会的话,找度娘。

一、本地调试

下载最新的LightWeightProxyServer,以前的本地启动多个代理ip,调试的时候是有问题的,已经改好提交了。启动LightWeightProxyServer,使用ipagent项目下代码进行调试。
更改成本地的ip以及开启的端口
在这里插入图片描述

使用http://dev.kdlapi.com/testproxy调试http请求,https://dev.kdlapi.com/testproxy调试https请求
在这里插入图片描述
发送请求,都返回200,就可以开始调试代码了

二、核心的目录及文件介绍

在这里插入图片描述

三、sqlite

sqlite存储的LightWeightProxyServer项目的所有的数据,项目中SpringBoot集成了sqlite,启动的Springboot项目的时候,需要了解sqlite初始化的过程

先连接sqlite,LightWeightProxyServer项目下面有个pro.db文件,这个就是 sqlite存储的数据,使用Navicat,新建连接,选择SQLite,在新建连接的窗口中有个数据库文件,选择LightWeightProxyServer项目下的pro.db文件,点击测试连接,就可以连接成功。进入可以看到里面表格及数据
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

application-dev.yml文件里面有sqlite的数据源配置,在springboot启动的时候,会自动读取schema.sql文件内容,初始化表。接着自动读取data.sql文件内容,初始化数据。如果项目中需要新增加表,就往schema.sql文件加创表语句可以了,如果需要初始化数据,就往data.sql文件内容添加insert的sql语句就行了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

sqlite与mybaitsplus结合操作数据源,跟mysql在dao、service、serviceImp里面的写法都一样的,使用起来也很方便的

四、ip代理核心过程

可以看出JobRunner实现了CommandLineRunner,在springboot启动之后执行的。接着看看run方法里面逻辑吧。用户表里面没有admin账号,就创建一个,密码也是admin。将白名单存储缓存里面,查看process_config_t表里面的数据,有几条就开启几个线程,每个线程都是Socket服务器,对应监听响应的端口。
在这里插入图片描述

在这里插入图片描述
接收客服端的请求的时候,使用线程池去处理
在这里插入图片描述
将客服端(浏览器、其他程序)字节码的请求转化HttpRequestMessage,封装下,为判断http与https方式以及有时候需要更改header头部请求信息作准备
在这里插入图片描述
在这里插入图片描述

http请求的数据
在这里插入图片描述

https请求的数据
在这里插入图片描述
在这里插入图片描述

Proxy类里面就封装了将请求转化的核心逻辑
在这里插入图片描述
如果method是Connected请求,走https方式,其他的走http
在这里插入图片描述
http方式,将请求转发给服务器,然后把服务器响应内容,给客服端(dev.kdl.com)
在这里插入图片描述

在这里插入图片描述
封装成服务器能识别的http请求方式
在这里插入图片描述
toString结果
在这里插入图片描述

写入socket
在这里插入图片描述

https方式,要注意,this.proxyHttps(); 这个方法直接走的ServerProxy的proxyHttps方法,而不是父类Proxy的proxyHttps方法。下面用请求方是浏览器说明(容易理解,请求方不一定就是浏览器哦)
在这里插入图片描述

开启两个线程,一个不断从浏览器读取数据,读取的数据写给目标端(dev.kdl.com)。另一个不断从目标端(dev.kdl.com)读取数据,写给浏览器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、控制层

最重要的就ProcessConfigTController里面的代码呢,新增,修改端口,删除的代理ip时候,程序怎么处理,可以去看下,也不难,就不多说了

总结

以上就是今天要讲的内容,LightWeightProxyServer的后端项目讲解,第一去看代码逻辑,可能会有点晕,多调试几次,里面的代码逻辑就很清新了。代理ip的内容就已经全部完结了,以后在java爬取数据的篇章中会涉及到代理ip内容。

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值