在近期的爬虫操作中,为了规避因同一IP频繁访问而导致的网站封禁,决定引入IP代理池机制,通过代理动态轮换以降低单一IP的访问频率。然而,面临的一个技术问题是:如何有效验证IP代理切换的成功性?
查找资料发现一个网站:https://ip.smartproxy.com/json
可以发现打开就会显示当前IP。
使用Requests库:
import requests
import json
response = requests.get("https://ip.smartproxy.com/json")
result = json.loads(response.text)
ip = result["proxy"]["ip"]
print(ip)
使用Selenium库:
from extension import proxies
import selenium
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
proxies_extension = proxies(proxies_user_name, proxies_password, proxies_endpoint, proxies_port)
chrome_options.add_extension(proxies_extension)
chrome_options.add_argument("--headless=new")
chrome = webdriver.Chrome(options=chrome_options)
chrome.get('https://ip.smartproxy.com/json')
print(chrome.page_source)
chrome.quit()
这里使用了extension(插件),是因为本人使用的代理用到了账号密码,Selenium不支持直接使用,需要通过加入一个extension.py(代码参考:GitHub - Smartproxy/Selenium-proxy-authentication: Example of username and password proxy authentication for use in Selenium)。
如果不需要账号密码,使用如下代码即可设置代理:
chromeOptions.add_argument("--proxy-server=http://xxx.xxx.xxx.xxx:xxxx")
通过返回的网页内容可以清楚看到自己的IP是否有变动,从而判断是否成功使用代理。