وب سایت محافظت شده با اثر انگشت TLS – انجمن DEV

Summarize this content to 400 words in Persian Lang
از پست فیسبوک برادر بائو، دیدم که وب سایت OpenAI پس از استنباط و تایید، مشخص شد که از محافظت از اثر انگشت TLS استفاده شده است. به بیان ساده، پروتکل HTTPS قبل از انتقال دادهها، یک پروسه تأیید خواهد داشت. سرور یک گواهی الکترونیکی ارسال میکند تا به مرورگر اجازه دهد تأیید کند که واقعاً سروری است که میخواهد به وبسایت متصل شود، در حالی که اثر انگشت TLS به سرور اجازه میدهد. برای گذراندن فرآیند تأیید، داده های تنظیم ارسال شده از مشتری از الگوریتم هایی مانند JA3 برای محاسبه اثر انگشت الکترونیکی برای تشخیص انواع مرورگر استفاده می کند. از آنجایی که curl از کتابخانه openssl برای تأیید استفاده میکند، دادههای پیکربندی ارسال شده آشکارا با سایر مرورگرها متفاوت است و سرور به راحتی میتواند آن را شناسایی کند. اگر از curl برای اتصال به مقاله OpenAI استفاده کنید، دریافت خواهید کرد:
$ curl -I https://openai.com/index/introducing-structured-outputs-in-the-api/
HTTP/2 403
….
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بسته درخواست های پایتون نیز از کتابخانه openssl استفاده می کند، بنابراین شما همان خطا را دریافت خواهید کرد:
>>> import requests
>>> requests.get(‘https://openai.com/index/introducing-struc
… tured-outputs-in-the-api/’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اگر میخواهید محتوای صحیح صفحه وب را به دست آورید، باید همان تنظیماتی را که مرورگر برای فرآیند تأیید انجام میدهد، ارسال کنید. در حال حاضر، افراد مهربان به ما کمک کرده اند تا این مشکل را حل کنیم.
$ ./curl_safari15_5 -I https://openai.com/index/introducing-structured-outputs-in-the-api/
HTTP/2 200
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
علاوه بر دستور curl، به شما کمک می کند تا اسکریپت هایی را تهیه کنید که وانمود می کنند نسخه های مختلف مرورگرها هستند دستگاه
اگر می خواهید از پایتون برای دریافت صفحه وب صحیح استفاده کنید، می توانید از بسته curl_cffi استفاده کنید که عملکردی مشابه curl-impersonate دارد:
>>> from curl_cffi import requests
>>> requests.get(‘https://openai.com/index/introducing-struc
… tured-outputs-in-the-api/’)
>>> r = requests.get(‘https://openai.com/index/introducing-s
… tructured-outputs-in-the-api/’, impersonate=”edge101″)
>>> r.status_code
200
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با افزودن پارامتر جعل هویت، میتوانید مرورگر موردنظر را تعیین کنید و محتوای صفحه وب را به درستی بازیابی کنید.
از پست فیسبوک برادر بائو، دیدم که وب سایت OpenAI پس از استنباط و تایید، مشخص شد که از محافظت از اثر انگشت TLS استفاده شده است. به بیان ساده، پروتکل HTTPS قبل از انتقال دادهها، یک پروسه تأیید خواهد داشت. سرور یک گواهی الکترونیکی ارسال میکند تا به مرورگر اجازه دهد تأیید کند که واقعاً سروری است که میخواهد به وبسایت متصل شود، در حالی که اثر انگشت TLS به سرور اجازه میدهد. برای گذراندن فرآیند تأیید، داده های تنظیم ارسال شده از مشتری از الگوریتم هایی مانند JA3 برای محاسبه اثر انگشت الکترونیکی برای تشخیص انواع مرورگر استفاده می کند. از آنجایی که curl از کتابخانه openssl برای تأیید استفاده میکند، دادههای پیکربندی ارسال شده آشکارا با سایر مرورگرها متفاوت است و سرور به راحتی میتواند آن را شناسایی کند. اگر از curl برای اتصال به مقاله OpenAI استفاده کنید، دریافت خواهید کرد:
$ curl -I https://openai.com/index/introducing-structured-outputs-in-the-api/
HTTP/2 403
....
بسته درخواست های پایتون نیز از کتابخانه openssl استفاده می کند، بنابراین شما همان خطا را دریافت خواهید کرد:
>>> import requests
>>> requests.get('https://openai.com/index/introducing-struc
... tured-outputs-in-the-api/')
اگر میخواهید محتوای صحیح صفحه وب را به دست آورید، باید همان تنظیماتی را که مرورگر برای فرآیند تأیید انجام میدهد، ارسال کنید. در حال حاضر، افراد مهربان به ما کمک کرده اند تا این مشکل را حل کنیم.
$ ./curl_safari15_5 -I https://openai.com/index/introducing-structured-outputs-in-the-api/
HTTP/2 200
علاوه بر دستور curl، به شما کمک می کند تا اسکریپت هایی را تهیه کنید که وانمود می کنند نسخه های مختلف مرورگرها هستند دستگاه
اگر می خواهید از پایتون برای دریافت صفحه وب صحیح استفاده کنید، می توانید از بسته curl_cffi استفاده کنید که عملکردی مشابه curl-impersonate دارد:
>>> from curl_cffi import requests
>>> requests.get('https://openai.com/index/introducing-struc
... tured-outputs-in-the-api/')
>>> r = requests.get('https://openai.com/index/introducing-s
... tructured-outputs-in-the-api/', impersonate="edge101")
>>> r.status_code
200
با افزودن پارامتر جعل هویت، میتوانید مرورگر موردنظر را تعیین کنید و محتوای صفحه وب را به درستی بازیابی کنید.