解决问题:(自动化测试不同ip地址访问)
因为现在大部分的代理提供商会提供大量的不可用代理,因为数量较大所以不会进行逐个测试,因为代理池是以几十万或者上百万的。那么我们要获取到指定的代理。下面就是如何实现的。
实现目标:
先通过尝试代理请求baidu.com,如果返回结果是200那么则认为有有效代理,然后返回可用代理的地址+ip给接下来的操作和测试使用。文章源自玩技e族-https://www.playezu.com/761480.html
文章源自玩技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刷新页面即可查看