用Squid配置自己的代理服务器注意事项(只有拿到用户名密码的人才能打开潘多拉魔盒)

如果你想去做爬虫,那么仅仅使用自己本地的ip肯定是不够的,这里有两种选择:

一、ip动态代理

这办法我就不多说了,可以搜索一下度娘,提供ip动态代理的平台很多

二、搭建自己的代理服务器

如果你正好有自己的服务器,无论是在阿里云还是在腾讯云,都可以

  1. 安装 squid ,参考  https://blog.csdn.net/qingfengxulai/article/details/80853870,只看安装服务端部分 
  2. 你的代理服务器我想一定只想让你自己访问,不想让别人访问(这个地方我自己吃了很大的亏,我刚开始以为自己弄一个陌生的端口【记得端口要在云平台的安全组去开放】,就没有人会知道自己这个端口的用途,也不用设置什么密码验证了,但是我想错了,1天后,我查看squid的日志,发现我的服务器被疯狂的利用)
  3. 不想让别人访问两种办法,第一,你可以设置允许的ip地址,这个简单你们自行查阅;第二、可以设置用户名密码进行验证,这个第一步已经有了。但是你发现如果仅仅按照上面的配置,无论你的代码怎么访问结果都是一个页面包含内容:403 错误,Access denied
  4. 一定要做这样的更改

    http_access allow authenticated
    http_access deny all

    deny all一定要再 http_access allow  authenticated 的下面, 这里的authenticated就是你设置的用户名,一定与前面生成的用户名要匹配

httpclient访问

public static void main(String[] args) {
    {
      try {
        // 设置代理HttpHost
        HttpHost proxy = new HttpHost("1.1.1.1", 8888, "http");

        // 设置要访问的HttpHost,即是目标站点的HttpHost
        HttpHost target = new HttpHost("baidu.com", 80);

        // 设置认证
        CredentialsProvider provider = new BasicCredentialsProvider();

        provider.setCredentials(
            new AuthScope(proxy), new UsernamePasswordCredentials("authenticated", "111111"));
        CloseableHttpClient httpClient =
            HttpClients.custom().setDefaultCredentialsProvider(provider).build();

        RequestConfig config = RequestConfig.custom().setProxy(proxy).build();

        HttpGet httpGet = new HttpGet("/");

        httpGet.setConfig(config);

        CloseableHttpResponse resp = httpClient.execute(target, httpGet);

        if (resp.getStatusLine().getStatusCode() == 200) {
          System.out.println("OK");
        } else {

        }
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

查看squid日志

tail -f /var/log/squid/access.log

1594695581.910    170 1.193.78.244 TCP_MISS/200 535 GET http://baidu.com/ authenticated HIER_DIRECT/39.156.69.79 text/html
1594695649.918      0 45.77.47.248 TCP_DENIED_ABORTED/407 0 CONNECT m.youtube.com:443 - HIER_NONE/- text/html
1594695713.152      0 95.217.16.145 TCP_DENIED/407 3954 CONNECT zwyr157wwiu6eior.com:443 - HIER_NONE/- text/html
1594695788.355      0 45.77.47.248 TCP_DENIED_ABORTED/407 0 CONNECT m.youtube.com:443 - HIER_NONE/- text/html

只有你访问的baidu事 200的状态码,其他访问的也不在是403的错误,而是变成了407的错误,这样他们就没有办法再为所欲为了,只有掌握了用户名密码的人才可以真正的访问。

你可能感兴趣的:(爬虫)