原创 

python selenium 通过 browsermobproxy 设置 referer 爬虫突破ACL限制

分类:爬虫,selenium    353人阅读    IT小君  2023-04-13 12:29

题记

爬虫爬取一个网页的时候,竟然打不开页面,返回如下出错误信息:

403 Forbidden
You don't have permission to access the URL on this server.

denied by Referer ACL

Powered by Tengine
CDN Request Id: 701ea29a16813829660952616e

从中可看出 服务器 Tengine 设置了Referer ACL(引用来源控制),即请求头request 的headers 的Referer 不被允许访问页面,所以把Referer改成爬取站点应该地址应该就可以吧?于是使用postman验证一番:

果然正常返回了页面代码,接下来就是修改爬虫的referer属性。如下:

 

说明:selenium官方是不支持修改请求的headers 的,所以以下代码没作用

 chrome_options = webdriver.ChromeOptions()
 chrome_options.add_argument("referer=http://www.example.com/")

解决方案是使用代理拦截器修改header,或者使用扩展比如:seleniumwire

以下代码通过修改browsermobproxy的headers实现修改selenium header

作者:chatgpt ,体验:https://yy123.ink/chatgpt

以下是使用Python和BrowserMob Proxy设置Referer的示例代码:

import browsermobproxy as BMP
from browsermobproxy import Server
from selenium import webdriver

# 启动BrowserMob Proxy服务器
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()

# 配置Chrome浏览器使用代理
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy))

# 启动Chrome浏览器
driver = webdriver.Chrome(chrome_options=chrome_options)

# 设置Referer
proxy.new_har("example.com", options={'captureHeaders': True, 'captureContent': True})
proxy.headers({"Referer": "https://www.example.com/"})

# 访问网页
driver.get("http://www.example.com")

# 获取请求
har = proxy.har
print(har)

# 关闭浏览器和代理服务器
driver.quit()
proxy.close()
server.stop()

在上面的代码中,我们首先启动了BrowserMob Proxy服务器,并使用`create_proxy()`方法创建了一个代理对象。然后,我们使用ChromeOptions来配置Chrome浏览器使用代理,通过`proxy.proxy`获取代理地址。接着,我们启动Chrome浏览器,并使用`new_har()`方法开始记录请求。然后,我们设置Referer为`https://www.example.com/`,通过`headers()`方法将其添加到请求头中。最后,我们使用`get()`方法访问一个网站,并使用`proxy.har`获取请求信息。最后关闭浏览器、代理服务器并停止BrowserMob Proxy服务器。

点击广告,支持我们为你提供更好的服务

HTML5数字产品服务公司网站模板

HTML5现代家居装潢公司网站模板

html5 canvas彩色碎片组合球形旋转动画特效

HTML5 Canvas竖直流动线条背景动画特效

js+css3抽奖转盘旋转点餐代码

小众时尚单品在线电子商务网站模板

响应式咖啡饮品宣传网站模板

html5 svg夜空中星星流星动画场景特效

响应式太阳能能源公司网站模板

响应式时尚单品在线商城网站模板

html5 canvas进度条圆环图表统计动画特效

现代时尚家具公司网站模板

canvas炫酷鼠标移动文字粒子特效

css+js实现的颜色渐变数字时钟动画特效

有机水果蔬菜HTML5网站模板

html5图标下拉搜索框自动匹配代码

css鼠标跟随文字模糊特效

网页设计开发公司网站模板

jQuery右端悬浮带返回顶部特效

中小型创意设计服务公司网站模板

点击广告,支持我们为你提供更好的服务
 工具推荐 更多»
点击广告,支持我们为你提供更好的服务