自定义实现新式ip代理,无法被检测

1、引言

        玩过爬虫的朋友对ip代理都不陌生,有时候在爬取某些数据时我们需要隐藏自己的身份,或是绕过某些站点对ip的限制就会使用到ip代理技术。或者是针对当下app应用中显示ip属地的情况,我们不想暴露自己的ip属地,也会用到ip代理。但正所谓上有政策下有对策,使用ip代理也有被识别出来的时候,那么就没有办法解决这个问题,让我们的真实ip无法被检测吗?这里就教大家实现一下如何彻底隐藏我们的真实ip地址,实现另类的ip代理。

2、检测ip代理的机制

        想要知道如何避开ip代理检测就要明白检测ip代理的机制,这里实现的ip代理主要是针对http和https协议类型的代理。

2.1、ip代理检测方法

        判断用户是否使用了ip代理就是看用户发起的网络请求中请求头中携带的ip地址和直接获取到的用户主机ip地址是否相同,不相同就是使用了ip代理,我们使用ip代理就是改变直接获取到的ip地址,当然这个ip地址是指用户当前客户端所对应的公网ip地址,我们所有的网络数据都是通过NAT技术转换到对应的公网ip上发送的。

        使用常规ip代理技术,每经过一级代理主机,ip地址信息都会被添加到请求头中,因此后端程序就可以通过请求头判断我们是否使用代理,并找到每一个代理主机的地址,从而进一步锁定我们的真实ip,因此,直白的说使用ip代理被发现就是被代理主机出卖的。为了彻底隐藏ip,我们就不能使用这种ip代理方式访问网络。

3、实现方法

        既然要彻底隐藏ip地址,我们可以把网络请求拆分独立,让目标服务器只能看见代理主机的ip地址,并且没必要使用多级代理,一级代理就足以,因为我们的真实ip只有代理主机能查看,不会加在请求头中一起发送到目标主机。对目标主机来说这就是一次请求,根本不知道代理这一回事。

3.1、代码实现

        这里是把请求信息发送给后端,让后端程序代替发送网络请求,并将网络数据返回的方式实现的,其实就是使用两次请求,后端程序必须放在服务器中才有效果,本地属于同一网络环境,ip都一样,因此看不出效果。

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        String url = request.getParameter("url");//要求代替请求的url
        String method = request.getParameter("method");//代替请求的方式,默认为get请求
        //如果要设置请求头信息,请设置对应的参数并添加设置
        //这里使用Jsoup框架代替发送请求,也可以使用其他方式
        Document document = Jsoup.connect(url).get();
        if (method.equals("GET")){
            document = Jsoup.connect(url).get();
        }else {
            document = Jsoup.connect(url).post();
        }//使用其它请求方式自行添加
        String html = document.html();
        response.setContentType("text/html; charset=utf-8");//html页面数据,
        response.getWriter().write(html);
    }

3.2、使用方法

        例如访问百度,我们通常在浏览器输入如下的url

https://www.baidu.com/

        但是使用这种自定义ip代理访问网络就不能使用这种方式,假设我们服务器后端程序访问地址为http://www.my.com/?agent,那么就要使用以下方式访问:

http://www.my.com/agent?url=https://www.bidu.com&method=get

4、总结

        使用这种方式就能彻底隐藏ip信息,但是这只是简单实现,在实际情况下要做更多的操作,因此,如果要真正投入使用,需要将其完善才行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值