برنامه نویسی

وب سایت محافظت شده با اثر انگشت 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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

با افزودن پارامتر جعل هویت، می‌توانید مرورگر موردنظر را تعیین کنید و محتوای صفحه وب را به درستی بازیابی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا