爬虫代理 IP 添加后,怎么样才能定时更换 IP? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xueyoucai
V2EX    Python

爬虫代理 IP 添加后,怎么样才能定时更换 IP?

  •  
  •   xueyoucai 2020-06-12 14:47:26 +08:00 4661 次点击
    这是一个创建于 1950 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有获取 IP 的 API,因为代理商的限制条件每个 IP 只存在 5 分钟-20 分钟不等。

    之前有尝试添加 threadiing 模块下的 timer 模块,但是好像不是很理想。所以想请教一下各位。

    如何做到在主函数不停止运行的情况下,每 5 分钟更换一个 IP,然后爬虫继续运行

    34 条回复    2020-07-09 10:17:57 +08:00
    lijia168
        1
    lijia168  
       2020-06-12 15:21:33 +08:00
    我之前那样子弄的,代理 ip 有个过期时间, 判断时间是否过期,过期了再重新取代理 ip
    kiracyan
        2
    kiracyan  
       2020-06-12 15:24:01 +08:00
    居然是五分钟换一个 一般不是从 ip 池里面随机取的吗 然后更新缓存池就好了
    xueyoucai
        3
    xueyoucai  
    OP
       2020-06-12 15:29:43 +08:00
    @kiracyan 我的那个是 9 元 1000 条的 IP,有时效性,IP 只要提出来过几分就用不了了
    xueyoucai
        4
    xueyoucai  
    OP
       2020-06-12 15:30:50 +08:00
    @lijia168 嗯,我也是这么想的,但是怎么样在到时间以后让采集数据的函数停止,然后去换 IP,还完以后在去执行函数
    ik
        5
    ik  
       2020-06-12 15:37:58 +08:00 via iPhone
    楼主的意思是爬虫里面逻辑不好定时更新代理对吧?
    可以试试用脚本配合 haproxy , iptables , cow 等方式实现定期更新端口转发
    optional
        6
    optional  
       2020-06-12 15:40:53 +08:00
    计算机里解决不了的问题就加一层。
    爬虫的 ip 从 cache 里取, 有个线程定时维护 cache 。
    ik
        7
    ik  
       2020-06-12 15:40:56 +08:00 via iPhone
    这样爬虫内使用的代理始终都是固定不变的, 只是可能需要解决重启转发服务时可能出现的异常
    huayunbin
        8
    huayunbin  
       2020-06-12 15:46:08 +08:00
    可以写个程序维护一个 ip 池,暴露个取 ip 的口子出去,爬虫直接取就行了。
    xueyoucai
        9
    xueyoucai  
    OP
       2020-06-12 15:48:26 +08:00
    @ik 对,您说的这几个都在 python 底下的库,还是在系统层面操作的
    xueyoucai
        10
    xueyoucai  
    OP
       2020-06-12 15:51:31 +08:00
    @optional 这个有一个具体的思路吗,在下才疏学浅
    xueyoucai
        11
    xueyoucai  
    OP
       2020-06-12 15:53:11 +08:00
    @huayunbin 问题是 如果把 Ip 取出来就开始计时了,到点就过期了
    312ybj
        12
    312ybj  
       2020-06-12 15:53:25 +08:00
    老铁,你的 ip 代理从哪弄得
    nullboy
        13
    nullboy  
       2020-06-12 15:53:35 +08:00
    我怎么试了几个代理服务商都很垃圾,根本没法用
    xueyoucai
        14
    xueyoucai  
    OP
       2020-06-12 15:58:39 +08:00
    @312ybj 在一个 IP 代理池的项目里,然后有推荐 IP 代理网站,我的那个是按个卖的,9 元 1000 。没法,公司不掏大钱,只能小钱买这种了
    aladdindingding
        15
    aladdindingding  
       2020-06-12 15:59:21 +08:00
    在用快代理他们隧道代理 还行
    xueyoucai
        16
    xueyoucai  
    OP
       2020-06-12 16:02:22 +08:00
    @nullboy 我的还行,可能是我用的少? 1000 条 我做测试用了 300 。然后不能用的大概有 60 多
    aladdindingding
        17
    aladdindingding  
       2020-06-12 16:04:26 +08:00
    用 redis 呗 或者自己起一个线程维护一个可以用的 ip 池
    wxiao333
        18
    wxiao333  
       2020-06-12 16:06:07 +08:00   1
    阿布云,一个请求换一次 ip,不按数量收费按时间,不香吗
    Cosimsolo
        19
    Csimsolo  
       2020-06-12 16:11:27 +08:00
    @xueyoucai 隧道代理云端切换不香吗?建议可以试用一下快代理或者阿布云,都有隧道产品,能够设置定时切换,自己测试看看
    kiracyan
        20
    kiracyan  
       2020-06-12 16:15:25 +08:00
    @xueyoucai 拿 ip 的时候能拿到过期时间吗 然后纪录过期时间 每次拿 ip 的时候从内存读 先判断是否过期 过期再从接口拿一个更新过期时间
    batyu
        21
    batyu  
       2020-06-12 16:23:21 +08:00
    看了评论才明白隧道代理是干嘛用的!
    xueyoucai
        22
    xueyoucai  
    OP
       2020-06-12 16:26:42 +08:00
    @kiracyan 不行,没法获取时间
    xueyoucai
        23
    xueyoucai  
    OP
       2020-06-12 16:27:23 +08:00
    @Cosimsolo 嗯哼 我试试
    lawler
        24
    lawler  
       2020-06-12 17:33:16 +08:00
    超时重试,第二次失败,切换 IP 。
    gxlonline
        25
    gxlonline  
       2020-06-12 19:59:21 +08:00 via Android
    可以试下 酷鱼代理 私密代理 隧道代理
    biu7
        26
    biu7  
       2020-06-12 20:39:23 +08:00
    9 元 1000 听上去像是讯代理。。。
    wangyzj
        27
    wangyzj  
       2020-06-12 20:41:46 +08:00
    之前我是淘宝买可以带换 ip 软件的 vps,各种换
    toomlo
        28
    toomlo  
       2020-06-13 12:39:57 +08:00
    问题是 如果把 Ip 取出来就开始计时了,到点就过期了
    -----------
    第一次用 ip 的时候才去代理商那里取,然后在存到代理池里面啊
    不一定非得先取了 ip 在用啊
    xueyoucai
        29
    xueyoucai  
    OP
       2020-06-13 14:46:23 +08:00
    @toomlo 你指的是一次全拿出来吗。但是 IP 提供商说了,是取出来以后就开始计时了。
    airdge
        30
    airdge  
       2020-06-14 07:59:01 +08:00
    ip 设置有效期啊,数据过期就重新获取
    写入缓存或者文本
    xiaozizayang
        31
    xiaozizayang  
       2020-06-14 10:42:35 +08:00
    利用买的代理来源做个代理池就行,爬虫服务从代理池那代理进行请求
    另一个保证代理池服务都是可用的就行
    dorothyREN
        32
    dorothyREN  
       2020-06-14 13:00:50 +08:00
    存到 redis 里面 设置个超时时间,这样只要 redis 里面有,那就是有效的
    g079708
        33
    g079708  
       2020-06-29 23:15:52 +08:00 via iPhone
    可以试一下快鸟代理,他们的短效代理 IP 有 1 分钟到 24 小时的时长任你选择,提取不收费,按使用收费。
    gxlonline
        34
    gxlonline  
       2020-07-09 10:17:57 +08:00
    可以用隧道代理,省去更换代理的步骤,云端自动切换 IP 。
    酷鱼代理 https://kuyukuyu.com 隧道代理
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     922 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 20:49 PVG 04:49 LAX 13:49 JFK 16:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86