Selenium自动化被拦截怎么办
一般来说,网站都有一定的保护机制。自动化程序的本意是减少机械式重复的工作内容,但要考虑到对方网站的业务能力上限有多高,避免站点将我们误认为是攻击性程序,从而影响双方正常业务。
开发时需要注意以下几点:
- 限制程序的请求频率
- 适时的切换IP和UA
如何设置IP和UA
先安装随机UA库
pip3 install fake-useragent
上代码:
#!/usr/bin/python
# coding: UTF-8
# -*- coding:utf-8 -*-
# IP代理和UA切换
from time import sleep
from fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from util.ProxyUtil import ProxyUtil
global driver
# 启动Chrome
def get_driver():
proxy_util = ProxyUtil()
proxies = proxy_util.load_proxy()
user_agent = UserAgent().random
# 格式样式
# headers请求头 --user-agent=Mxxxxxx/5.0 (Macintosh; U; Intel Mac OS X xx_x_x; de-de) AppleWebKit/xxx.xx.xx (KHTML, like Gecko) Version/5.0.4 Sxxxx/xxx.xx.xx
# proxies代理设置 --proxy-server=http://xxx.xxx.xxx.xxx:80
print("headers请求头", '--user-agent={}'.format(str(user_agent)))
print("proxies代理设置", '--proxy-server={}'.format(str(proxies)))
chrome_options = Options()
# 设置不加载图片
# prefs = {"profile.managed_default_content_settings.images": 2}
# chrome_options.add_experimental_option("prefs", prefs)
# 设置代理
chrome_options.add_argument('--proxy-server={}'.format(str(proxies)))
# 替换User-Agent
chrome_options.add_argument('--user-agent={}'.format(str(user_agent))) # 配置为自己设置的UA
service = Service(r'../util/chromedriver')
# 启动Chrome
return webdriver.Chrome(service=service, chrome_options=chrome_options)
if __name__ == '__main__':
try:
driver = get_driver()
driver.get('http://httpbin.org/ip')
# 显性等待
WebDriverWait(driver, 10).until(
lambda _: driver.find_element(By.XPATH, '/html/body/pre')
)
print("页面代理设置", driver.page_source)
sleep(1000)
except Exception as e:
driver.quit()
print('open_url:', e)
ProxyUtil的下载地址
也可以按照上面格式,填入自己的代理信息
代码执行后可以看到代理是否正确配置:
文章来源:https://www.toymoban.com/news/detail-672620.html
按F12可以看到UA的状态
文章来源地址https://www.toymoban.com/news/detail-672620.html
到了这里,关于Selenium自动化教程(三)设置IP和UA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!