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

玩技站长
玩技站长
管理员, Keymaster
11043
文章
0
粉丝
接口测试评论238字数 726阅读2分25秒阅读模式
解决问题:(自动化测试不同ip地址访问)

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

实现目标:

先通过尝试代理请求baidu.com,如果返回结果是200那么则认为有有效代理,然后返回可用代理的地址+ip给接下来的操作和测试使用。文章源自玩技e族-https://www.playezu.com/761480.html

python通过requests模块调用接口获取测试可用代理插图文章源自玩技e族-https://www.playezu.com/761480.html

实现步骤:

第一步:使用while循环添加最大循环次数文章源自玩技e族-https://www.playezu.com/761480.html

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

while attempts < max_attempts:

第二步:使用try和except方法执行验证流程文章源自玩技e族-https://www.playezu.com/761480.html

        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地址...
344

第三步:通过请求接口后,遍历将需要的ip和port信息获取到,然后进行http和https拼接文章源自玩技e族-https://www.playezu.com/761480.html

第四步:请求百度查看状态返回是否为200,为200则为可用的代理地址。文章源自玩技e族-https://www.playezu.com/761480.html

第五步:完整代码展示文章源自玩技e族-https://www.playezu.com/761480.html

评论后查看
原创不易此内容为****隐藏内容****评论后,F5或Ctrl+F5刷新页面即可查看
文章源自玩技e族-https://www.playezu.com/761480.html文章源自玩技e族-https://www.playezu.com/761480.html
 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证