用requests库请求某小说网站:
import requests url = "mark一下" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81', 'Referer': 'mark一下' } sess = requests.Session() resp = sess.get(url, headers=headers) print(resp) print(resp.text)
报错:
<Response [403]> <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta name="robots" content="noindex,nofollow"><meta name="viewport" content="width=device-width,initial-scale=1"><link href="/cdn-cgi/styles/challenges.css" rel="stylesheet"></head><body class="no-js"><div class="main-wrapper" role="main"><div class="main-content"><noscript><div id="challenge-error-title"><div class="h2"><span class="icon-wrapper"><div class="heading-icon warning-icon"></div></span><span id="challenge-error-text">Enable JavaScript and cookies to continue</span></div></div></noscript></div></div><script>(function(){window._cf_chl_opt={cvId: '2',cZone: "www.beqege.com",cType: 'managed',cNounce: '61665',cRay: '806eb7ea5a9823e7',cHash: '7d18640ffcd5900',cUPMDTk: "\/?__cf_chl_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A",cFPWv: 'g',cTTimeMs: '1000',cMTimeMs: '0',cTplV: 5,cTplB: 'cf',cK: "visitor-time",fa: "\/?__cf_chl_f_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A",md: "ze4P_s0YNvx6EbGkb2pleOaUnAd08jX_l1zcG8S1qDE-1694758350-0-AYRdt8Z41miFDroGBltr08Q-9VVlwFQVXGevmSdVdWI8n0FJk8g3Rob8XI_1PcANiXKVuXuQlW7_dB1y7uGreckLoSTU440GI5X6WRbPyrNukjRWwOlBI5gTN1niKBAfaEGQUkRd04984HAEmepexaOA5Ju9pK2PhFKDiczyht4SDSAM9kBKC3BkyxIV378ZsPyNwnAB10T_YOEAj45NAt5_R88DY99N0LK9rh4ZIqYZPu-gqKSxDfIIDr6r5K1qb63DGD45UzrZuNAlPKMx_p_SCuQv9f0phzdKfy5pcEQp22AxFPrqL2xLS4TNKU3u3m4KpyI_6hgAi3AbWtGzxHUfxEg5XwZUPP5eOd8bsGlV6w1_NsSfElIyiw9IayC7W7qfaxbrmmLKz0tW-CW6uvhK9Neruc_0BcB1Gds7R0W8jzc8GmWHKgzvB4GVZRKNYbX5NBtMZoLZufmpWFECIE4yeykhLeZht4Q96Mw0U17yohOH5cHJ_LcPlusPsScZ_MKtJx45fmUZ8mA0nsQXrxLymdZ4q1GHbmrpJjKdTiNgmgEQsYdOrVPo-uTjyVcH2GVLX-xQVeJIFIOybjs9CrEgcothrzlDWWyUQ32DJuv7sjc8GQ5dG19lCg4oOCvaBEa9GZ9lh22Tc1Alf7FGRzqQYA1G1lJhE98_Krsf-xJY73I9PZf-b4wHmBSMLlczS6BTUWaP5PI7CfMpPQhT8FfeiQdoo7EMe--G_2CNJnTeHOCnGhasI1SACdCqmOJIaX0BDlTNShyoHxhIo-YH7P9uKRkmMpSExb19osxERGPUL-IQ-0RNu9Fs-h5iba7Qemk2AIrR5OgmM8vzMKUWkil0cL_fpEzFjZTjs4KVZC9dxNvkZfSmL84doLhFAtLhoNHi6QO1Pt1LBF22Vv7op4ftTvBSaclttJUMfdYD5KRhwzq4A3o2R5xJy8AWqUx8BfDrkfm2ZzD2XjQBBZeL2Fu9sSk6ZW9urgZXZswTKt-N259LjY0UvZW7eDWdrBdhmX7dj8SxzPrYylshyKdMUktOCI9FqnETuqzm3ExYlqzqrTbpF6xH_6tXrzv64VUb4Nfud7Et9ZhAn3Q7UPL8YsFjHwVWgJ3-hp3ORmtShjYzRfL2K6c8nVHFCFOrc5-Do_FfBO-B6Ayth__xVbXWN4VJpjb0W6LLa-SDq5rCNrpKkK5ZZwjaq8mRppSRCUR0BuQbTWHteWL3tqtAbtluO-UrWU8ytBanjqucJYHqUncUXJdJq90vYy7J46jSSZrhLDmKNb9vpdKJD-VCy9lvS93FQPgJmB9r7WS5F_F4pPEd-X3An6NpKCHQPOh1eGpEBThoAbx-YZ3BUNTbIv6CdksMhNh9lP0UhtvU-nfEpJMdpkt8jo2guyKfglhnZxoRtVFXdH1RaKRQKaaFcDubHHuBAm6AokjE3ve6DPyGoLPt3EkKAN5EH4Z7CelSVtBkhe_2uUgXg0dDP41x7ktA9nV55ZDetyDA5SzwWu3E6C5UtQf2ikDstyKXj0hwv6jMFqspzJojSzVymO97-mmLZy3X0HCwDjIZrXSUXzGwuNQsUFU-70LFCFKob_UgtsuBi-rTceGtpRh99Mv-AxZtJE-Kx5N38or9pbTeQ0n47eeYbGdNmmc0WU5tNlATpGONShTfYr6QWmgUnsjmSoSreLI92WN5bmXngxtkUYhDVh1LsdYyvDnp3LZowXEtbYyGTp1xFqVViOYkOkccpnwQAYfPStmZCP4ZkCebd5WFpyjxC9G3SobpqSZhD7-odOr3h4hN4vbTbqxzx4KKJcbrNuhBTtBlNGyKOZP7vqH7Tu6hDtq0JPXN7AEiMAPdWPmehLZ61FBptLiQZN9dbeZ-84M13B5n5tcuEybuHTXWJUuVRNJkYYG9Qalv-3LYCKQXDZ7BTw7b75RZ6tV_b0VvNEB4yp_RXpqptXhVXsfu4LSc35HAh0MC1esZaGrjdKJprkmbjhafrT8yRe-_Ilt2OHgAyZHbG5nkZ7K87Jyp0uXl3vLR1VP_KZ1GJnksDgjhNsKq_-Hu-e07pvKPmLuzo9mjv10ELM-1so0FVNcc8RAPlwrhqHjeROMf8_bWRZmyDMKwUSOShksCmIskkgL_C1UzjQ7O-31hNgRbOiZ-neTkamTL1xjvW4Je7e9k0IVLjVcNAPHysK5ahd6itscFZpjPFr4wIbiQU3l__mlntVyxDUAlY2S2tAbhwDuIr4wUFMmTYybr1qIk47BBk6JLZDBW3QFSgPK_7EkT_01S0h5fwelo8OsiOjqIqOwKGAlvMDHumv-w0_CZoFY2JEQwiAUSXtxoN-TZnxIg6e2SV6oOssCrwDEoLjfYF37RqYPmkl5fU05KUnRuDthLloIy5aJrOw296Ii4DqgRferl3M2o6ystfcFi9MHzQL0D4LYaTtLmWKD-GhgEAKyi2uM-XpYXukFTq1HBR5qxB1zynJTC08P0j70AzbsSEFxrdcAiTLQyqW98b5yaJmqWxgIqrpgIhYeBTspBduPrL9HzgtTTZ_kcquDfRp93cQNzMmTAjdHcWpa_kXz1el1PgJuJrIOL7XhsIQyul1_ho0CJf8wMusvKjWdbmNFsciSQpvtBKnGbBV-KkbeHgOFnrnmak1MsjO_wDq6pimGu6PmLH808LTQrKf6lwXCO2_UKUjWSfUfAc7XNNmy6AJYMBUU_Uq0FGFSY2cNCkk5bnwNwZ26dsjb11D7olBXDU9iIhwjDHrCKUO0Jna55gBECnsR2Y4rQG0L6N7KmjklcYFLuQyR2wkapXG4sM-Prqbxz6iDTYJHRCKEuuQc6CZ1pxDlNSVM",cRq: {ru: 'aHR0cHM6Ly93d3cuYmVxZWdlLmNvbS8=',ra: 'TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNi4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMTYuMC4xOTM4Ljgx',rm: 'R0VU',d: 'VltJoUpli1+czO7H6nqAJaETtqnku1TO2GlnCLusWYnn3/nybgtlSYvKYyS2D2hvJ+otuoTXqAY6v66VZLJO6slSoQfOEybT05O2rXGW3ed71433vz/e2Lj3OB8Z7U9yddAoVQOCLB8n6YbLYDJLapDATsWaB62ozHxtTD8l7rzh2xZNvTexqEmDnbS63P7wBH+Iqf1Tk1kWfaqNvNYzJSqZNGnkRYDJO2feWVZeptWulyozb2lYW+FOhnAKN1fQi2KhSixkBBeVS0uZINKZ48V4oTjR17HmRts+dl5yXWC1rbJPpBU3w8bOj+d4p6xXkYu9Qm12TO0coS1d/KG+VedM1Vu6hDJmZb7IcA68GK0zn6UL7WnMYdRyLJvuSUtVC4DPxlXl4RvaL60+xdcEFq0jz2GqHXyzIN6HhjCBfospYnB0kHkjvpbLCUZUNa59/WCQigcPgksq8FKCMIMMFAXipx5mYQvmJuaOPwbkT6GoIUe/mI259WkyZdDWACOEa1V5N5Sx31AmRMtSukUvRbp2Z/yIz2LqEULAOQLLh043gE5/Fy0JpH1W3CraTLZh',t: 'MTY5NDc1ODM1MC40NjMwMDA=',cT: Math.floor(Date.now() / 1000),m: 'rvb739DpNLTX6kG24Di5j7W5Qkks+Wl7cZHb1rwE0aU=',i1: 'yDtFiyAZu1s4k6IEIi/32w==',i2: 'Wonf4Ff/8uAHGK2V+z7uSw==',zh: 'aytt6gqKlZuxo0gMULYb5X9u7zCP8aU8L7xja7lcX08=',uh: 'iXxJpef7gV4j0aSGyr5KJxUwpN3qlYZ3VFbqtfzo5sI=',hh: '11PjS9IApaQUuFbbNwjvhK/gP5826EKq4kUg/4hdNlI=',}};var cpo = document.createElement('script');cpo.src = '/cdn-cgi/challenge-platform/h/g/orchestrate/chl_page/v1?ray=806eb7ea5a9823e7';window._cf_chl_opt.cOgUHash = location.hash === '' && location.href.indexOf('#') !== -1 ? '#' : location.hash;window._cf_chl_opt.cOgUQuery = location.search === '' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf('?') !== -1 ? '?' : location.search;if (window.history && window.history.replaceState) {var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;history.replaceState(null, null, "\/?__cf_chl_rt_tk=TLS8hS8609oDXpvjWaGInhKbUU0FD8pAYGydVnq5Fa4-1694758350-0-gaNycGzNC1A" + window._cf_chl_opt.cOgUHash);cpo.onload = function() {history.replaceState(null, null, ogU);}}document.getElementsByTagName('head')[0].appendChild(cpo);}());</script></body></html>
可以看到,打印出来的resp.text
中包含Just a moment...
字样。
某佬告诉我,这是典型的TLS/JA3指纹,算是一种新的反爬手段。
浏览器地址栏输入https://tls.browserleaks.com/json
可以查看浏览器的JA3指纹。同样,使用requests
库、httpx
库或者别的什么库,都可以查看通过这类库从客户端发出请求的JA3指纹。
参考:https://zhuanlan.zhihu.com/p/601474166
import requests r=requests.get('https://tls.browserleaks.com/json') r.json()
参考:https://baijiahao.baidu.com/s?id=1760958257477378891&wfr=spider&for=pc
浏览器指纹是指通过收集一个设备或浏览器的特定信息,以识别其唯一身份的技术。这些信息可以包括:浏览器类型、版本、语言设置、操作系统类型、屏幕分辨率、字体、插件等。
JA3指纹是一种用于识别 TLS/SSL 客户端的技术。它通过分析 TLS/SSL 客户端的特定特征来识别和跟踪客户端。这些特征包括客户端支持的加密算法、协议版本、扩展字段等。通过分析这些特征,网络安全专业人员可以识别和跟踪客户端,并识别可疑的恶意软件和攻击行为。JA3 指纹是一种高效且简单易用的识别 TLS/SSL 客户端的方法,广泛用于网络安全监测和威胁情报研究等领域。
具体来说,JA3指纹是由客户端发送的ClientHello消息中的TLS版本、密码套件以及一些其他参数生成的一个32字节的哈希值。通过观察和分析网络流量中的TLS握手消息,可以提取并计算出相应的JA3指纹。不同的TLS客户端实现、配置和版本可能会生成不同的JA3指纹,因此可以将其用作识别不同客户端的一种方法。
TLS/JA3指纹可以被用于以下目的:
- 安全审核和追踪:通过分析和识别不同客户端的JA3指纹,可以对TLS连接进行安全审核和追踪,识别异常或不受信任的客户端。
- 威胁情报和恶意行为检测:将已知的恶意客户端的JA3指纹加入黑名单,并监控网络中的JA3指纹,以便检测到类似的恶意行为或攻击。
- 身份验证和防范欺骗:通过比对客户端的JA3指纹与其宣称的握手参数是否一致,可以用于检测假冒客户端、恶意代理等欺骗行为。
需要注意的是,由于JA3指纹是基于客户端发送的握手消息生成的,因此可能会受到一些因素的影响,例如中间人攻击、网络代理等。此外,随着TLS客户端实现的更新和演进,JA3指纹也可能发生变化,因此在使用和分析JA3指纹时要保持及时的更新和验证。
解决办法:
- 直接用selenium模拟浏览器进行爬取(不太喜欢用这个就没跑)
- 换用
pyhttpx
库
import pyhttpx url = "mark一下" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81', 'Referer': 'mark一下' } sess = pyhttpx.HttpSession(browser_type='chrome', http2=True) resp = sess.get(url, headers=headers, allow_redirects=False) # allow_redirects设置是否允许自动重定向 print(resp) print(resp.text)
用Wireshark和Fiddler配合使用可以分析网络协议和JA3(没看大懂,回头研究)
Wireshark和Fiddler都是流行的网络分析工具,用于捕获和分析网络数据流。
- Wireshark是一个免费的开源网络协议分析工具。它能够在网络上捕获流经网卡的数据包,并对这些数据包进行详细的解析和分析。Wireshark支持多种网络协议,可以帮助你分析网络流量、排查网络问题、监控网络性能等。它提供强大的过滤和搜索功能,可视化展示数据包信息,并提供各种统计和报告。
- Fiddler是一款强大的Web调试代理工具,用于截取、检查和修改网络流量。当你使用Fiddler作为代理时,它会拦截应用程序发送的HTTP/HTTPS请求,并将其转发到目标服务器。同时,Fiddler也会拦截来自目标服务器的响应,并返回给应用程序。这使得你可以轻松监视和修改请求和响应,进行网络调试和分析。Fiddler提供了很多功能,如请求修改、自定义脚本、性能分析等。
虽然Wireshark和Fiddler都可以用于网络数据分析,但它们的应用场景略有不同。Wireshark主要关注网络协议的全面解析和分析,适用于对底层协议和整个网络流量进行深入研究。而Fiddler则更侧重于Web应用程序的调试和分析,它提供了更高级的功能,可以拦截、修改和监控特定的HTTP/HTTPS请求和响应。
总结来说,Wireshark和Fiddler是两个功能强大的网络分析工具,Wireshark适用于全面的网络协议分析,而Fiddler更适合于Web应用程序的调试和分析。
参考资料:
https://blog.csdn.net/Y_morph/article/details/121893114
https://blog.csdn.net/weixin_45080737/article/details/131580439