python - 我正在开发一个网络爬虫。我收到一条警告信息。我有多脆弱?
问题描述
我正在开发一个脚本,最终将从该网站中提取数据。我收到“不安全请求警告”消息。这是一个脚本,我只会用于我自己,而不是用于商业用途。我对中间攻击的人有多脆弱?我对 SSL 几乎一无所知,并且不想在运行此脚本时将自己置于危险之中。我在问我自己运行脚本是否安全,或者我是否需要研究更好的安全措施。感谢您的帮助!
导入请求
url = 'https://midwestauction.com/'
response = requests.get(url, verify = False)
print(response.status_code)
解决方案
requests
不会自动下载额外的证书,但您可以自己执行此操作,例如以下建议:https ://stackoverflow.com/a/28667850/1358308
- ssllabs报告说我们需要“Go Daddy Secure Certificate Authority - G2”并包括 SHA256 指纹
973a4127
...... - 搜索这个指向我们:https ://ssl-ccp.godaddy.com/repository我们可以在其中下载gdig2.crt.pem
- 将此添加到
certifi
PEM 文件中,我使用 Web 浏览器、Python 和 shell 脚本的组合来完成此操作,但您可以使用 Python 完成所有操作:
import requests
import certifi
gdig2_url = 'https://ssl-ccp.godaddy.com/repository/gdig2.crt.pem'
local_pem = 'midwestauction.pem'
with open(certifi.where(), 'rb') as fd:
pem = fd.read()
with requests.get(gdig2_url) as res:
res.raise_for_status()
pem += res.content
with open(local_pem, 'wb') as fd:
fd.write(pem)
然后你可以在 Python 中使用它:
requests.get(url, verify=local_pem)
推荐阅读
- sql-server - SFTP 问题 SSIS
- html - Select2 发布文本而不是值
- javascript - 如何在 React 组件中强制设置属性?
- javascript - 移相器游戏未加载
- string - 使用 JMeter 从响应头中提取位置
- spring-boot - Spring boot 应用程序部署在本地外部 tomcat 9.13 服务器上,但未能在实时 tomcat 服务器 9.13 上部署
- c# - 水晶报表在安装后无法在客户端 PC 上运行
- spring-boot - 将 liquibase 添加到现有 Spring Boot 项目的正确方法
- java - JPA entitygraph fetchgraph 不工作,而 loadgraph 工作
- python - Python:从引用的位置替换列表,而不是创建新的引用/列表