问题背景
最近工作上有开发爬虫的任务,对目标网站数据进行抓取,由于大部分网站都在国外,无法直接访问,需要通过代理才能登录。爬虫部署的服务器在香港,所以爬虫部署到服务器后,是可以访问目标网站的,但本地开发调试程序时,需要通过代理才能访问。
这篇文章就带大家了解一下如何在Java程序中使用代理访问网络。
解决方案
-
你需要一个代理服务器,和一个可以连接到此服务器的客户端。
花点银子买一个稳定的账号,或者自己搭建一个。
这里我使用自己搭建的Shadowsocks
代理服务器,使用Shadowsocks-Windows
作为本地代理的客户端,并开启默认的1080
端口,以供本地其他程序通过代理访问网络。 - 指定 Java 程序的代理服务器地址和端口
有两种指定方式:- 通过 命令行参数 指定
如果只需要考虑代理 HTTP 协议请求,只需添加如下命令行参数:
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080
想要 HTTP 和 HTTPS 协议的请求都通过代理访问网络,可以追加上:
-Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=1080
最终填写的值为& - 通过 命令行参数 指定