【发布时间】:2021-03-06 03:01:48
【问题描述】:
我目前正在尝试抓取retailmenot.com,这是我的代码到目前为止的样子:
import requests
from collections import OrderedDict
s = requests.session()
s.headers = OrderedDict()
s.headers["Connection"] = "close"
s.headers["Upgrade-Insecure-Requests"] = "1"
s.headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
s.headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
s.headers["Sec-Fetch-Site"] = "none"
s.headers["Sec-Fetch-Mode"] = "navigate"
s.headers["Sec-Fetch-Dest"] = "document"
s.headers["Accept-Encoding"] = "gzip, deflate"
s.headers["Accept-Language"] = "en-GB,en-US;q=0.9,en;q=0.8"
s.get("https://www.retailmenot.com/sitemap/A")
当我使用此代码时,我会立即被重定向到 CloudFlare 页面。也就是说,每当我通过 burpsuite 将我的流量替换为以下代码的最后一行时:
s.get("https://www.retailmenot.com/sitemap/A", proxies = {"https":"https://127.0.0.1:8080"}, verify ="/Users/Downloads/cacert (1).pem")
我直接进入网站。我觉得这有点奇怪,想知道是否有人可以向我解释为什么会发生这种情况以及是否有办法通过使用一些不同的证书来获得类似的结果(为了使用 BurpSuite 证书,我需要保持应用程序打开)。非常感谢!
【问题讨论】:
-
Burp 可能会更改标头的顺序,添加一些标头或类似内容,从而绕过机器人保护。更好地比较传入和传出请求。它可能与证书无关。
-
@SteffenUllrich 感谢您的回复。我知道 BurpSuite 发送的标头的顺序,这就是我使用
OrderedDict()的原因。疯狂的是我尝试了很多东西,似乎唯一有效的方法就是使用 BurpSuite 证书。你知道发生了什么吗? -
很难说。也许是 TLS 指纹。通过使用 BurpSuite,TLS 连接在 BurpSuite 和服务器之间,因此如果那里有 TLS 配置,它会使用属性。
-
@SteffenUllrich 非常感谢您的回复。我认为这可能是因为 TLS 指纹?你知道我可以使用其他证书吗?
-
TLS指纹与使用的证书完全无关。
标签: python ssl python-requests certificate burp