美文网首页
Python突破JA3指纹

Python突破JA3指纹

作者: 是东东 | 来源:发表于2023-06-07 14:29 被阅读0次

    一、修改python的open_ssl

    from requests.adapters import HTTPAdapter
    from requests.packages.urllib3.util.ssl_ import create_urllib3_context
    
    ORIGIN_CIPHERS = ('ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:'
    'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES')
    
    
    class DESAdapter(HTTPAdapter):
        def __init__(self, *args, **kwargs):
            """
            A TransportAdapter that re-enables 3DES support in Requests.
            """
            CIPHERS = ORIGIN_CIPHERS.split(':')
            random.shuffle(CIPHERS)
            CIPHERS = ':'.join(CIPHERS)
            self.CIPHERS = CIPHERS + ':!aNULL:!eNULL:!MD5'
            super().__init__(*args, **kwargs)
            
            
        def init_poolmanager(self, *args, **kwargs):
            context = create_urllib3_context(ciphers=self.CIPHERS)
            kwargs['ssl_context'] = context
            return super(DESAdapter, self).init_poolmanager(*args, **kwargs)
    
        def proxy_manager_for(self, *args, **kwargs):
            context = create_urllib3_context(ciphers=self.CIPHERS)
            kwargs['ssl_context'] = context
            return super(DESAdapter, self).proxy_manager_for(*args, **kwargs)
    

    s.mount的第一个参数表示这个适配器只在https://tls.browserleaks.com开头的网址中生效

    import requests
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'}
    s = requests.Session()
    s.headers.update(headers)
    
    for _ in range(5):
        s.mount('https://tls.browserleaks.com', DESAdapter())
        resp = s.get('https://tls.browserleaks.com/json').json()
        print(resp)
    

    二、使用第三方库
    github仓https://github.com/yifeikong/curl_cffi

    pip install curl_cffi
    from curl_cffi import requests
    
    # 注意这个 impersonate 参数,指定了模拟哪个浏览器
    r = requests.get("https://tls.browserleaks.com/json", impersonate="chrome101")
    
    print(r.json())
    # output: {'ja3_hash': '53ff64ddf993ca882b70e1c82af5da49'
    

    相关文章

      网友评论

          本文标题:Python突破JA3指纹

          本文链接:https://www.haomeiwen.com/subject/bpnnedtx.html