[求助] 我想用 Python 批量测试 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
Ger2EX
V2EX    Python

[求助] 我想用 Python 批量测试 IP 代理是否用

  •  
  •   Ger2EX 2018-09-26 22:03:21 +08:00 14541 次点击
    这是一个创建于 2587 天前的主题,其中的信息可能已经有所发展或是发生改变。

    python 小白,爱好者 求教

    用 shell 抓取到一组代理 IP 并另存为一个文本文件 xiciip.txt 中; 如:

    183.129.153.122:36839 115.46.71.101:8123 222.191.233.74:36574 219.157.144.246:8118 121.31.163.225:8123 122.235.168.162:8118 119.31.210.170:7777 183.129.207.74:14823 116.62.134.173:9999 116.192.171.169:43928 115.46.77.208:8123 183.21.81.58:40539 120.92.74.237:3128 27.37.46.202:9000 120.92.74.189:3128 

    shell 没找到方法来测试确认代理 IP 是否可用,网上找一些 python 方法;

    但网上的例子都是指定一个代理 IP 去测试;

    我想用 python 按行读取代理 IP 与端口,然后用 for 循环逐行批量测试 ip 是否可用;

    import requests f = open("xiciip.txt") line = f.readline() #读取一行, for line in f : try: requests.get('http://bing.com/', proxies = {"http":"http://120.92.74.189:3128"} ) #这样是成功的,120.92.74.189:3128 可用 #我想把 120.92.74.189:3128 用 line 变量来替换,多次测试没成功; except: print ( "connect failed" ) else: print ( "success" ) 

    请高手指定一下,如何在 proxies = 后面加入 line 变量,我不知道哪里出问题了

    尝试 1 把{}中的内容 做成一个变量

    proxy = '"http":"http://'+line[:-1]+'"' #不知这样定义有无问题,对 shell 和 python 的符号使用很感冒 requests.get('http://bing.com/', proxies = {proxy} ) 

    但不成功返回全是 failed

    尝试 2

    把 proxies = {"http":"http://120.92.74.189:3128"} 全定义为变量字符串

    请大家帮助指教一下

    如何引入变量 line "http":"http://120.92.74.189:3128"

    解释一下这句语法意思,为什么会多个双引号,还有冒号的 proxies = {"http":"http://120.92.74.189:3128"}

    谢谢!

    12 条回复    2018-09-27 13:32:58 +08:00
    raycool
        1
    raycool  
       2018-09-26 22:08:30 +08:00
    line = 'http://' + line

    requests.get('http://bing.com/', proxies = {"http":line}

    另外,使用多线程效率会大大提升
    bucky
        2
    bucky  
       2018-09-26 22:09:16 +08:00
    proxies 是字典,你要循环的是字典
    Qzier
        3
    Qzier  
       2018-09-27 00:35:28 +08:00 via iPhone
    用 aiohttp
    Trim21
        4
    Trim21  
       2018-09-27 00:43:20 +08:00
    Joshua999
        5
    Joshua999  
       2018-09-27 00:50:19 +08:00 via Android
    试试 print(' "http:" ')输出的是什么就知道了
    trn4
        6
    trn4  
       2018-09-27 07:04:56 +08:00 via iPhone
    把冒号后面换成 line。另外要注意 line 有没有把换行符也一起读进来了。
    在 Shell 里面用 curl 也可以测代理通不通啊。
    bmos
        7
    bmos  
       2018-09-27 08:28:43 +08:00
    xici 的我认为可以直接放弃了,不知道是不是技术原因 99%不能用。在 V2 翻到一个老帖子,推荐一下,感觉可用的很多。t/438606
    PythonAnswer
        8
    PythonAnswer  
       2018-09-27 09:37:16 +08:00 via iPhone
    有古老工具可用
    Ger2EX
        9
    Ger2EX  
    OP
       2018-09-27 10:55:48 +08:00
    谢谢,各位的回复;
    PinkFish
        10
    PinkFish  
       2018-09-27 11:56:11 +08:00
    readline 会把每行最后的\n 读进来,把 line strip 一下
    Ger2EX
        11
    Ger2EX  
    OP
       2018-09-27 13:29:03 +08:00
    在网上找到一个多线程的方法,真接把 ip.txt 替换成我的, 但执行后没有反应,也没有生成文件
    Ger2EX
        12
    Ger2EX  
    OP
       2018-09-27 13:32:58 +08:00
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1050 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:30 PVG 07:30 LAX 16:30 JFK 19:30
    Do have faith in what you're doing.
    ubao msn 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