爬虫,TLS指纹 剖析和绕过

当你欲爬取某网页的信息数据时,发现通过浏览器可正常访问,而通过代码请求失败,换了随机ua头IP等等都没什么用时,有可能识别了你的TLS指纹做了验证。

解决办法:

1、修改 源代码

2、使用第三方库 curl-cffi

from curl_cffi import requests as curl_req
def Use_curl():
    res = curl_req.get(
        url='https://cn.investing.com/equities/amazon-com-inc-historical-data',
        headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
        },
        impersonate="chrome101"
    )
    res.encoding = 'utf-8'
    print(res.text)

获取到网页:

原理解析:

1、什么是TLS 指纹校验

TLS 及其前身 SSL 用于为常见应用程序和恶意软件加密通信,以确保数据安全,因此可以隐藏在噪音中。要启动 TLS 会

### Python 绕过 TLS 指纹检测的技术方案 为了有效绕过TLS指纹检测,在Python中可以采用多种策略来模拟合法浏览器的行为,从而避免被服务器识别为自动化工具。具体措施包括但不限于: #### 修改User-Agent字符串 大多数Web应用程序会记录HTTP请求头中的`User-Agent`字段以判断来访者所使用的设备类型操作系统版本。因此,设置一个常见的桌面版或移动版浏览器的User-Agent可以帮助隐藏爬虫身份。 ```python import requests headers = { 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36') } response = requests.get('https://example.com', headers=headers) print(response.status_code) ``` #### 使用自定义证书验证逻辑 当建立安全连接时,默认情况下某些库可能会暴露特定模式给远程主机用于匹配已知的安全配置文件。通过指定自己的CA捆绑包并禁用默认行为可减少这种风险。 ```python from urllib.request import Request, urlopen import ssl context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE req = Request('https://tls.browserleaks.com/json') with urlopen(req, context=context) as response: data = response.read().decode('utf-8') print(data) ``` #### 调整TCP/IP栈参数 更高级别的规避手段涉及修改底层网络堆栈特性,比如窗口大小、MSS选项以及其他TCP选项字段。这通常需要借助第三方模块完成,并且可能违反目标网站的服务条款。 #### 应用层混淆技术 除了上述方法外,还可以考虑引入额外的应用程序级加密或者其他形式的数据编码方式,使得传输过程更加难以分析。不过这种方法同样存在法律合规性的考量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值