pyspider配置带验证的squid代理池

2018-03-13  本文已影响0人  UU小宝

就是这样的:

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')

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

上一篇下一篇

猜你喜欢

热点阅读