美文网首页
pyspider配置带验证的squid代理池

pyspider配置带验证的squid代理池

作者: UU小宝 | 来源:发表于2018-03-13 00:29 被阅读0次

    就是这样的:

    crawl_config = {

            "proxy":"用户名:密码@你的代理池ip:6666"

    }

    首先要安装squid(centos下)

    yum install -y squid

    作者都推荐squid,那么就用吧~

    添加squid的用户验证

    htpasswd -c /etc/squid/passwd 用户名

    根据提示输入两次密码

    如果找不到htpasswd, 执行

    yum install httpd

    然后继续上一步。

    然后根据这个配置文件覆盖/etc/squid/squid.conf文件

    http_port 6666 #对外公布的端口

    #缓存大小

    cache_mem 128 MB

    maximum_object_size 16 MB

    cache_dir ufs /var/spool/squid 100 16 256

    access_log /var/log/squid/access.log

    auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd #指定认证程序以及账户文件

    #auth_param basic children 50 #同时连接的客户端数量

    # 定义端口

    acl Safe_ports port 80      # http

    acl SSL_ports port 443

    acl CONNECT method CONNECT

    acl auth_user proxy_auth REQUIRED

    # 拒绝所有非定义的端口 

    http_access deny !Safe_ports

    http_access allow auth_user

    # 拒绝所有非定义的端口

    http_access deny CONNECT !SSL_ports

    http_access deny all

    via off

    forwarded_for delete

    #forwarded_for off

    #文件最后加上  高匿配置 

    request_header_access X-Forwarded-For deny all 

    request_header_access From deny all 

    request_header_access Via deny all

    follow_x_forwarded_for deny all

    request_header_access Referer deny all

    request_header_access User-Agent deny all

    cache_peer 115.213.238.102 parent 35759 0 no-query weighted-round-robin weight=1 connect-fail-limit=2 allow-miss max-conn=5 name=115.213.238.10220

    never_direct allow all

    其中这里就是你可用的http 代理ip列表

    cache_peer 115.213.238.102 parent 35759 0 no-query weighted-round-robin weight=1 connect-fail-limit=2 allow-miss max-conn=5 name=115.213.238.10220

    网上免费的质量都不高,有银子的建议买收费的~

    如果你使用的是pyspider的话,还可以直接建立一个任务,定时爬取某个免费的代理列表。然后通过任务定时生成squid.conf文件。

    以下是代码片段,大家参考一下

    先复制一份squid.conf.example当做模板。可以参考如下代码:

    cd /etc/squid

    mv squid.conf.default squid.conf.example

    以下是更新conf的代码:

            proxy_list = response.json['msg']#获取到的ip列表

            default_conf = open('/etc/squid/squid.conf.example' , 'r').read()#读取模板文件

            default_conf += '\n'

            for index  in range(len(proxy_list)):#把ip定制成指定格式

                ip, port  = proxy_list[index]['ip'],  proxy_list[index]['port']

                proxy_conf = "cache_peer " + ip + " parent " + str(port) + " 0 no-query weighted-round-robin weight=2 connect-fail-limit=2 allow-miss max-conn=5 name=proxy-" + str(index) + "\n"

                default_conf += proxy_conf

            default_conf += '\n never_direct allow all'

            conf = open('/etc/squid/squid.conf' , 'w')#存储文件

            conf.write(default_conf)

            conf.close()

            message = os.system('systemctl restart squid')

    --------------

    相关文章

      网友评论

          本文标题:pyspider配置带验证的squid代理池

          本文链接:https://www.haomeiwen.com/subject/hsjsfftx.html