python通过requests模块调用接口获取测试可用代理 -凯发app官网

接口测试评论119字数 2179阅读模式
解决问题:(自动化测试不同ip地址访问)

因为现在大部分的代理提供商会提供大量的不可用代理,因为数量较大所以不会进行逐个测试,因为代理池是以几十万或者上百万的。那么我们要获取到指定的代理。下面就是如何实现的。

实现目标:

先通过尝试代理请求baidu.com,如果返回结果是200那么则认为有有效代理,然后返回可用代理的地址 ip给接下来的操作和测试使用。

python通过requests模块调用接口获取测试可用代理

实现步骤:

第一步:使用while循环添加最大循环次数

max_attempts = 5  # 最大尝试次数
attempts = 0
while attempts < max_attempts:

第二步:使用try和except方法执行验证流程

        try:
            response = requests.get("代理地址")
            if response.status_code == 200:
                proxy_data = response.json()
                if proxy_data['code'] == 0 and proxy_data['success'] and proxy_data['data']:
                    proxy_list = proxy_data['data']
                    for proxy_info in proxy_list:
                        ip = proxy_info['ip']
                        port = proxy_info['port']
                        proxies = {'http': f'http://{ip}:{port}', 'https': f'https://{ip}:{port}'}
                        try:
                            # 使用代理发送请求,验证代理是否可用
                            response = requests.get("http://www.baidu.com/", proxies=proxies, timeout=5)
                            if response.status_code == 200:
                                print("|√-获得可用代理:"   ip   ":"   str(port))
                                return f'{ip}:{port}'
                            else:
                                print(f"|√-代理验证失败:状态码 {response.status_code}")
                        except exception as e:
                            print("|x-代理验证失败:", str(e))
                else:
                    print("获取代理地址失败:没有可用代理")
            else:
                print(f"获取代理地址失败:状态码 {response.status_code}")
        except exception as e:
            print("获取代理地址失败:", str(e))
说明:经过几个代理商的测试一般返回的数据格式大概为,如果没有地区信息如何查询
{"code":0,"data":[{"ip":"171.14.91.79","port":22031,"endtime":"2023/9/1 17:28:31","city":"三门峡市","rosname":"st_hnsanmenxia4"}],"msg":"0","success":true,"num":1}
问题描述: 好多代理商,在请求接口后没有返回响应的ip地址的归属地,那么我们进行自动化测试或者其他测试的时候无法判断ip地址...
142

第三步:通过请求接口后,遍历将需要的ip和port信息获取到,然后进行http和https拼接

第四步:请求百度查看状态返回是否为200,为200则为可用的代理地址。

第五步:完整代码展示

评论后查看
原创不易此内容为****隐藏内容****评论后,刷新页面即可查看

风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系
免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加凯发k8国际官网首页入口的联系方式以免受骗。

玩技微信群
官方微信交流群
weinxin
rainbow-shownow
玩技公众号
官方微信公众号
weinxin
playezu
 

发表评论

匿名网友
确定