【DrissionPage】Linux上如何将https改为http

最近有个老板找我做一个自动化的程序,要求部署到Linux上

这是一个http协议的网站,chrome在默认设置下,会将http的网站识别成不安全的内容,然后自动将http转化成https访问

但是,这个http的网站它的加载项里既有http的又有https的内容,

这会导致在chrome浏览器里访问它时出现加载错误:

这是因为:

GPT:当您在Chrome浏览器中输入HTTP网址时,如果它自动转换为HTTPS,这通常是由于**HSTS(HTTP Strict Transport Security)**功能导致的。HSTS是一种安全功能,它告诉浏览器只能通过HTTPS访问网站,绝对禁止HTTP方式。这意味着,如果您之前访问过该网站的HTTPS版本,浏览器会记住这一点,并在您下次尝试通过HTTP访问时自动将其升级到HTTPS

方案一

直接加启动参数

python 复制代码
from DrissionPage import ChromiumOptions

co = ChromiumOptions()
# 允许所有不安全的内容加载
co.set_argument('--allow-running-insecure-content')

但是这种方式运行后还是会有警告

而且后续的一些cookie植入、验证码校验的操作都会受影响

看来主要问题不在不安全内容的加载问题上

用window打开chrome访问这个网站,然后手动将https改为http,这时网站就回复正常了,没有任何报错和警告

用浏览器打开会自动从http变成https,要解决这个跳转,才能解决问题的关键

方案二

通过对GPT的PUA,最终得到了一个解决方案:

添加内容安全策略元标签:在网页的部分添加以下元标签,可以指示浏览器自动将不安全的HTTP请求升级为HTTPS:

html 复制代码
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

AI 生成的代码。仔细查看和使用。 有关常见问题解答的详细信息.这会将所有HTTP请求转化为HTTPS请求,从而避免混合内容错误2。

已知我使用的是DrissionPage框架,那么问题来了,怎么让这个标签加载到网站的源码中?

不用想着用DrissionPage运行js脚本替换innerHTML了,这是条死路,网站不会老老实实的按照你想的那样更新源码

这里直接公布正确答案:mitmpeoxy

既然都用mitmproxy了,直接在请求发出前把https改成http不就行了

python 复制代码
import mitmproxy.http
from mitmproxy import ctx

class Counter:
    def request(self, flow: mitmproxy.http.HTTPFlow):
        if 'https://www.testurl.com' in flow.request.url:
            ctx.log.info("------%s" % flow.request.url)
            # 替换为http的url
            flow.request.url = 'http://www.testurl.com'

addons = [
    Counter()
]

然后启动参数要这样写:

python 复制代码
from DrissionPage import ChromiumPage, ChromiumOptions

co = ChromiumOptions()
# 使用mitmproxy的端口作为代理
co.set_proxy('http://127.0.0.1:8080')
co.set_argument('--start-maximized')
co.set_argument('--headless=new')
co.set_argument('--no-sandbox')
page = ChromiumPage(co)

另外:

部署和安装可以自行搜索,或者看我的另一篇文章:
在CentOS 7.9上安装和配置mitmproxy的详细步骤

相关推荐
绵羊20234 小时前
单细胞转录组测序上游——cellranger
linux
Awkwardx6 小时前
Linux系统编程—线程同步与互斥
linux·服务器
赖small强7 小时前
[Linux]内核队列实现详解
linux·kfifo·请求队列·工作队列(workqueue)·等待队列·kfifo_init
www.029 小时前
linux服务器升级显卡驱动(笔记)
linux·运维·服务器·笔记·ubuntu·服务器环境
wdfk_prog9 小时前
[Linux]学习笔记系列 -- [kernel][time]hrtimer
linux·笔记·学习
蒜香拿铁9 小时前
Angular【http服务端交互】
前端·http·angular.js
摇滚侠9 小时前
Spring Boot3零基础教程,把 Java 程序打包为 Linux 可执行文件,笔记91
java·linux·笔记
报错小能手9 小时前
计算机网络自顶向下方法11——应用层 详解HTTP/3
网络协议·计算机网络·http
游戏开发爱好者89 小时前
Fiddler抓包实战教程 从安装配置到代理设置,详解Fiddler使用方法与调试技巧(HTTPHTTPS全面指南)
前端·测试工具·小程序·https·fiddler·uni-app·webview
universe_019 小时前
前端八股之HTTP
前端·网络协议·http