Akamai Bot Manager არის ერთ-ერთი ყველაზე პოპულარული ანტი-ბოტი გადაწყვეტილებები ბაზარზე. იგი გამოიყენება ბევრი მაღალი პოპულარული საიტები, მოიცავს e-commerce საიტები მოგზაურობა საიტები, და, დამოკიდებულია მისი კონფიგურაცია, შეიძლება იყოს რთული შეუწყოს. ჩემი გამოცდილება, ტიპიური ნიმუში მე შეხვდება, როდესაც ვებ-გვერდზე გააქტიურება Akamai Bot Manager დაცვა, ეს არის, რომ scraper (გორმალურად Scrapy ერთი ჩემი stack) შეჩერება და დროა პირველი მოთხოვნა. მაგრამ რა არის Akamai Bot Manager, და როგორ ვხედავ, თუ საიტზე იგი იყენებს? Akamai Bot Manager მიმოხილვა Akamai- ის bot detection, როგორც ნებისმიერი სხვა თანამედროვე ანტი-ბოტი დაცვის პროგრამული უზრუნველყოფა, მუშაობს მრავალ დონეზე. არის ერთ-ერთი პირველი: Akamai შეამოწმოებს TLS handshake და კავშირის დეტალები (JA3 TLS fingerprint, encryption suites, TLS ვერსია, და ა.შ.) იხილოთ, თუ ისინი შეესაბამება რეალური ბრაუზერი ან ცნობილი ავტომატური ინსტრუმენტი. თითოეული ბრაუზერი (Chrome, Firefox, Safari და ა.შ.) აქვს სპეციფიკური TLS fingerprint, და თუ თქვენი კლიენტების TLS Client Hello არ შეესაბამება ნებისმიერი პოპულარული ბრაუზერი, Akamai იცის, რა არის ცუდი. Network fingerprinting ასევე შეამოწმოთ – რეალური ბრაუზერები თითქმის ყოველთვის გამოიყენება HTTP/2+ ამ დღეებში, და ისინი გადაცემა HTTP headers გარკვეული წესით და ფორმატში. თუ კლიენტს ჯერ კიდევ იყენებს HTTP/1.1 ან აქვს headers არ არის ბრაუზერული წესით, ეს არის შავი ფანჯარა. გარდა ამისა, Akamai ეძებს ბრაუზერული კონკრეტული headers ან ღირებულებები, რომ scrapers შეიძლება შეუწყოს; უზრუნველყოფს თქვენი headers (მომხმარებლო-გენტი, მიიღეთ-გენდი, და ა.შ.) რეალური ბრაუზერი არის მნიშვნელოვანია. HTTP/2 usage and header order and their order კიდევ ერთი layer არის Akamai შეამოწმებს, თუ კლიენტების IP-ი არის სამზარეულო ქსელის, მობილური ქსელის ან მონაცემთა ცენტრი. სამზარეულო და მობილური IP-ები (მომცველი რეალური მომხმარებლები) მაღალი ხარისხის საიმედოობა, ხოლო ცნობილი მონაცემთა ცენტრი IP-ის ზომები ავტომატურად შეუზღუდავი არიან. უმაღლესი მოთხოვნები ერთი IP-ის მისამართი ან IP-ის დოუნეტში ასევე შეამციროს საიმედოობის ხარისხი. ეს არის მიზეზი, რომ წარმატებული scraping ხშირად მოითხოვს rotating – ყოველთვის გამოიყურება სხვადასხვა რეალურ მომხმარებლის ადგილებში, არა Cloud Server Farm. IP reputation and analysis residential proxies და ბოლოს, JavaScript სენსორი ვებ გვერდზე მოკლე მონაცემთა პერსონალი კლიენტების გარემოში და ინტერაქციების შესახებ (გალითად, დრო, მუსის მოვლენები, ან მათი არჩევა, უნიკალური თვისებები ბრაუზერში, და ა.შ.). Akamai- ის AI მოდელები ამ მონაცემებს crunch ითვლება, რათა თითოეულ სეზონზე ბოტი სავარაუდოობის სავარაუდოობის სავარაუდოობა. ეს аспект არის ყველაზე რთული და ხშირად მოითხოვს საწინააღმდეგო ბრაუზერის გაშვება ან სენსორული ლოგიკის რეპლიკაცია. (დაშვეობით ჩვენი ეფექტურობა აქ - ჩვენი ეფექტურობა იქნება ქსელის დონის კონტროლი, რომელიც არის ყველაზე პოპულარ Akamai მუშაობა Behavioral ანალიზი Client-side Script და AI მოდელები Akamai მუშაობა Behavioral ანალიზი Behavioral ანალიზი Client-side Script და AI მოდელები მაგრამ როგორ შეგვიძლია იპოვოთ, რომ საიტზე გამოიყენება Akamai Bot Manager? გარდა ამისა თუ თქვენ ხედავთ, რომ და cookies გამოიყენება ვებ-გვერდზე, ეს არის უპირატესობა, რომ ის იყენებს Akamai თავიანთი დაცვისთვის. ჩვეულებრივი Wappalyzer ბრაუზერის გაფართოება abck ნომერი BMS ჩვეულებრივი Wappalyzer ბრაუზერის გაფართოება abck abck ნომერი BMS ნომერი BMS ამ დაცვას, ბევრი Scrapy მომხმარებლები შეუზღუდავი Download manager to bypass Akamai. ამ plug-in ინტეგრირებული რეალური ბრაუზერების ქსელის შეთავაზება. scrapy-impersonate curl_cffi პრაქტიკაში, Scrapy Impersonate იძლევა თქვენი Scrapy spider- ის მოთხოვნებს Chrome- ის ან Firefox- ის სახით: იგი გთავაზობთ TLS fingerprints (JA3) რომელიც შეესაბამება ამ ბრაუზერებს, იყენებს HTTP/2, და მაშინაც კი შეესაბამებს დაბალი დონის HTTP/2 frame headers, რათა იმიტომ, რომ ბრაუზერის ნიმუშები. ამით, იგი შეესაბამება TLS და HTTP/2 fingerprinting პრობლემა - Scrapy spider ამ მენეჯერი შეუძლია Handshake ერთად Akamai- ს დაცული სერვერზე გზა, რომელიც თითქმის არ არის განსხვავებული ჩვეულებრივი Chrome ბრაუზერზე. შეზღუდვა Scrapy Impersonate მიუხედავად იმისა, რომ Scrapy Impersonate არის ძლიერი ინსტრუმენტი, ეს მოიცავს ზოგიერთი შეზღუდვა: Scrapy Impersonate is designed as a Scrapy download handler, which means it only works within Scrapy’s asynchronous framework. If your project doesn’t use Scrapy or you want to switch to a different framework (like a simple script with / or an asyncio pipeline), you can’t directly carry over its capabilities. Migrating away from Scrapy often means a of your HTTP logic, and you’d lose the built-in TLS spoofing unless you implement a new solution from scratch. Locked into Scrapy: requests httpx complete rewrite Using Scrapy Impersonate alongside proxy rotation can be tricky. Under the hood, it replaces Scrapy’s default downloader with one based on , which doesn’t seamlessly integrate with Scrapy’s proxy middleware. Early adopters discovered that HTTPS proxy support was broken because the proxy handling code was bypassed. Although fixes and workarounds (like disabling Scrapy’s built-in proxy handling and configuring directly) exist, it’s harder to rotate proxies or handle proxy authentication with this setup. Robust error handling for proxy failures (e.g., detecting a dead proxy and retrying) is not as straightforward as with Scrapy’s standard downloader, because errors bubble up from the layer and may not trigger Scrapy’s usual retry logic. Proxy Rotation Challenges: curl_cffi curl_cffi curl Scrapy Impersonate currently supports a finite list of browser fingerprints (Chrome, Edge, Safari, etc., up to certain versions). This list can lag behind the latest browser releases. You might be stuck impersonating an older browser version, which could be a problem if a target site specifically requires the nuances of a newer TLS handshake (some advanced WAFs actually check minor details that change between Chrome versions). Maintenance and Flexibility: Perhaps most importantly, even with proper TLS and HTTP/2 impersonation, . For websites that have implemented a higher level of protection, checking also the browser fingerprint, any browserless configuration, including Scrapy Impersonate, isn’t sufficient for Akamai or similar top-tier bot defenses. You might get past the TLS handshake, but fail on other signals (like the absence of the expected sensor data or subtle discrepancies in headers/cookies). In other words, it’s a piece of the puzzle, not a complete solution. Not a Silver Bullet: Akamai Bot Manager can still detect and block you გზა, რომელიც ჩვენ ვხედავთ დღეს, ხელს უწყობს პირველი ორი ნაბიჯების გადაწყვეტილებებს: ჩვენ შეუზღუდავი ვართ. , ოპტიმიზირებული TLS fingerprint და rotating residential proxy, რათა rotate ჩვენი IPs და აქვს მაღალი რეპუტაცია ხარისხი. JA3Proxy JA3Proxy TLS Fingerprints და JA3 განიხილება ადრე გადატანა გადაწყვეტილება, მნიშვნელოვანია, რომ იცოდეთ, რა exactly ჩვენ ვცდილობთ. თითოეული HTTPS კლიენტს წარმოადგენს უნიკალური ამ fingerprint არის კომბინაცია TLS პროტოკონის ვერსია და მრავალი ვარიანტი, რომ კლიენტს ამბობს, რომ იგი მხარს უჭერს – ვფიქრობ, რომ ეს არის კლიენტის “გოლექტი” TLS- ის საუბარი. ძირითადი კომპონენტები მოიცავს: TLS fingerprint e.g. TLS 1.2 vs TLS 1.3. Modern browsers will offer 1.3 (while still allowing 1.2 for compatibility). Older clients or some libraries might only do 1.2. Supported TLS Version: the list of cryptographic algorithms the client can use, in preferred order. Browsers tend to have long lists including ciphers like AES-GCM, ChaCha20, etc., plus some GREASE (randomized) values to prevent fingerprinting. Cipher Suites: extra features in TLS, like Server Name Indication (SNI), supported groups (elliptic curves), ALPN (which is used for HTTP/2 negotiation), etc. Both the presence of certain extensions and their order matter. Extensions: კონცეფცია ეს არის სტანდარტებული გზა ამ TLS Client Hello დეტალების რეგისტრაციისთვის. JA3, რომელიც სახელწოდება მისი შექმნათების ინციალების შემდეგ, შეიცავს ფერადი ნიმუში, რათა ზოგიერთი ფართობი კონკრეტულად შეუერთდეს: JA3 fingerprinting JA3_string = TLSVersion,CipherSuiteIDs,ExtensionIDs,EllipticCurveIDs,EllipticCurveFormatIDs თითოეულ სიაში (კმაყოფილები, გაფართოება და ა.შ.) შეიცავს და სექციები მაგალითად, Chrome- ის ბრაუზერი შეიძლება აწარმოოს JA3 string, როგორიცაა: - , 771,4866-4867-4865-....-47-255,0-11-10-16-23-...-21,29-23-30-25-24,0-1-2 ეს აჩვენებს TLS 1.2 (771 არის 0x0303), კონკრეტული კომპლექტი ციფრული სუტიები, გაფართოება, მხარს უჭერს curves, და curve ფორმატები (იანი არის სტანდარტული IDs). JA3 string შემდეგ არის უსაფრთხოების ინსტრუმენტები ხშირად დააკმაყოფილოს ან შედარებით MD5 ჰაერი (როგორიცაა, რომ ეს უფრო ადვილია, ვიდრე ხანგრძლივი ნომრები). MD5 hashed რატომ არის ეს მნიშვნელობა ბოსტექციისთვის? Chrome X ვერსია Windows- ში იგივე JA3 დისკები შევიდა სიაში. Firefox აქვს საკუთარი განსხვავებული JA3. browser TLS stacks are fairly uniform ყოველთვის Python- ის მოთხოვნების ბიბლიოთეკა (მართავს OpenSSL- ს ქვეშ) აქვს JA3, რომელიც სრულიად განსხვავდება ნებისმიერ ძირითადი ბრაუზერით, ასე რომ ადვილად იპოვება. ანტი-ბოტის მომსახურება, როგორიცაა Akamai, შენარჩუნებს JA3 ჰაჟების მონაცემთა ბაზებს: თუ თქვენი JA3 არ არის "გადასტურა კარგი" სიაში (ხვეულებრივი ბრაუზერები) ან თუ ეს არის ცნობილი ავტომატიზაციის სიაში, თქვენ მიიღებთ ფანჯარა. რა თქმა უნდა, JA3 ორიგინალურად შექმნილია malware და bots მათი TLS handshake, და ეს გახდა სასარგებლო ინსტრუმენტი ანტი scraping ასევე. ამ შემთხვევაში, თუ გსურთ მიიღოთ TLS Fingerprint Checks, . we need our client’s JA3 to match a popular browser ეს ჩვეულებრივ იმას ნიშნავს, რომ უახლესი Chrome- ის ან Firefox- ის fingerprint- ის ნიმუშვა (როგორიცაა, რომ ეს არის ყველაზე პოპულარული legit მომხმარებლები ინტერნეტში). მხოლოდ User-Agent string ცვლილება არ არის საკმარისი – ჩვენ უნდა შეცვალოს დაბალი დონეზე TLS handshake. Scrapy Impersonate გააკეთებს ეს შიდა მიერ (სამთავრობით, რომელიც გამოიყენება სპეციალური კრბილების და TLS ბიბლიოთეკების შექმნა ბრაუზერების ნიმუში). მაგრამ Scrapy- ისგან, საჭიროა კიდევ ერთი გზა იგივე ეფექტი მისაღებად. curl_cffi TLS Impersonation Proxy და Residential Proxy Chain ჩვენი გადაწყვეტილება არის იმისათვის, რომ ჩვენი scraper თითქმის არ არის განსხვავებული რეალური ბრაუზერის მომხმარებელს: chain two proxies JA3Proxy is an open-source tool that acts as an HTTP(S) proxy that replays traffic with a chosen TLS fingerprint. In other words, you run JA3Proxy locally, configure it to imitate a specific browser’s TLS handshake, and then direct your scraper traffic through it. JA3Proxy will terminate your TLS connection and initiate a new TLS handshake to the target site using the impersonated fingerprint. From the target site’s perspective, it looks like, say, a Chrome browser connecting. The beauty of this approach is that – you can use Python , , cURL, or anything, by simply pointing it at JA3Proxy. You are no longer locked into Scrapy or any particular library to get browser-like TLS; the proxy takes care of it. JA3Proxy for TLS Impersonation: it’s client-agnostic requests httpx Under the hood, JA3Proxy uses (an advanced TLS library in Go) to customize the Client Hello. It supports a variety of client profiles (Chrome, Firefox, Safari, etc., across different versions). You can, for example, configure it to mimic the latest browsers available in the library. For our needs, we’d choose the latest available Chrome fingerprint, Chrome 133. As for Scrapy-Impersonate, the integration of the latest browsers in the library can take some time, but until this gets regularly updated, it’s not an issue. uTLS One thing to note: JA3Proxy focuses on TLS fingerprints (the JA3 part). It doesn’t inherently modify HTTP headers (other than those that relate to TLS, like ALPN for HTTP/2) or handle higher-level browser behaviors. It gets us past the network fingerprinting, which is the hardest to change, but we must still ensure our HTTP headers and usage patterns are correct. Luckily, we can manually set headers in our HTTP client to mimic a browser (User-Agent, etc.), and HTTP/2 can be achieved as long as the TLS negotiation allows it (Chrome’s Client Hello will advertise ALPN support for h2, so if the site supports it, JA3Proxy will negotiate HTTP/2). The second part of the chain is an upstream . This will take care of the IP reputation and distribution. Residential Proxy for IP Rotation: residential proxy The combined effect is powerful: to Akamai, your scraper now looks like Chrome 133 running on a residential IP. The TLS handshake matches Chrome’s JA3, the HTTP/2 and headers can be adjusted to match Chrome, and the source IP is a regular household. This addresses the major fingerprinting vectors at the network level. It doesn’t solve Akamai’s JavaScript-based challenges by itself, but this should be enough to bypass most of the websites you’ll encounter. JA3Proxy ინსტრუმენტი დააყენეთ JA3Proxy და გაქირავდით residential proxy. შემდეგი ნაბიჯები დაგეხმარებათ გაქირავოთ და გაქირავოთ. დააყენეთ JA3Proxy JA3Proxy არის წერილი Go. თქვენ გაქვთ ორი მარტივი ვარიანტი: კომბინირება წყაროდან ან გამოყენება Docker კონტეინერი. შექმნას წყაროდან, თქვენ უნდა Go დააყენა. Run: git clone https://github.com/LyleMi/ja3proxy.git cd ja3proxy make ეს უნდა იყოს წარმოებული a არჩეული ფუნქციონირება (თუ არჩეული, შეგიძლიათ აწარმოოთ მას შემდეგ, რაც პროგრამული უზრუნველყოფა ხელმისაწვდომია.) ja3proxy go build თუ გსურთ Docker, არსებობს წინასწარ აშენებული სურათი GitHub Container Registry. მაგალითად: docker pull ghcr.io/lylemi/ja3proxy:latest დასაწყისში დასაწყისში დასაწყისში დასაწყისში დასაწყისში Docker არის მოსახერხებელი, რადგან მას შეფუთვა ყველაფერი გარეშე საჭიროა ადგილობრივი Go გარემოს. docker run ჩემი პირადი გამოცდილება, ინსტალაცია იყო მცირე ცუდი. მე არ შეგვიძლია Docker სურათი მუშაობა, რადგან მე მუდმივად მიიღო შეცდომები, როდესაც ცდილობენ დაუკავშირდეს მას, რადგან არ იყო ბრაუზერები აღიარებული. მაშინ მე გადაწყვიტოს შექმნას manually ჩემი Mac, და მე შეხვდა იგივე შეცდომები. თუმცა, საათის შემდეგ გადარჩენის, მე აღმოაჩინეს, რომ მე უნდა განახლება ზოგიერთი დამოკიდებულებები, განსაკუთრებით uTLS; არსებობს კონფლიქტები ბრაუზერების ვერსია, და ყველა ეს იწვევს პრობლემები. რა თქმა უნდა, მე წარმატებით დააინსტალირდი, ასე რომ, თუ თქვენ მიიღებთ ზოგიერთი შეცდომები პირველი, არ დატოვოთ. მიიღეთ ან შექმნა TLS სერტიფიკატები JA3Proxy შეიძლება ფუნქციონირდეს როგორც HTTPS პროქსი, რაც იმას ნიშნავს, რომ ის გადარჩენა TLS და წარმოადგენს საკუთარი სერტიფიკატი თქვენი კლიენტს. სტანდარტულად, ის ეძებს და თუ თქვენ არ გთავაზობთ სერტიფიკატს, თქვენ შეიძლება აწარმოოს იგი ჩვეულებრივი ტექსტის რეჟიმში (როგორიცაა რეგულარული HTTP პროქსი) და უბრალოდ შეუზღუდოთ სერტიფიკატების კონფიგურაცია თქვენი კლიენტში (გურცელი არ არის წარმოებისთვის, მაგრამ ხელმისაწვდომი ტესტირებისთვის). cert.pem key.pem საუკეთესო პრაქტიკა არის, რომ შექმნათ თვითმმმართველობის დააუქმებული root სერტიფიკატი და key, და კონფიგურაცია თქვენი scraper Trust ის სერტიფიკატი, ასე რომ თქვენ შეგიძლიათ შეკუმშვის სატვირთო გარეშე უსაფრთხოების შეტყობინებები. თქვენ შეგიძლიათ შექმნათ ერთი გამოყენებით OpenSSL, მაგალითად: openssl req -x509 -newkey rsa:2048 -sha256 -days 365 -nodes -keyout key.pem -out cert.pem -subj "/CN=JA3Proxy" ეს შექმნა a / ორმაგი ხელმისაწვდომია ერთი წლის განმავლობაში. (და წარმოების გამოყენებისთვის, თქვენ კი შეიძლება გამოიყენოთ legitimate internal CA, თუ თქვენ გაქვთ, რომ setup, მაგრამ ყველაზე scraping მიზნით, self-signed არის კარგი, სანამ თქვენი კლიენტს იცის, რომ გონება მას.) cert.pem key.pem JA3Proxy დაწყება Chrome fingerprint- ის გამოყენებით ახლა ჩვენ აწარმოებთ პროქსი. თუ გამოყენებით binary, აწარმოეთ ბრძანება, როგორიცაა: ./ja3proxy -port 8080 -client Chrome -version 131 -cert cert.pem -key key.pem -upstream YOURPROXYIP:PORT დასაწყისში გადაიხადეთ ეს ბრძანება: - პორტი 8080 აცხადებს, რომ მოუსმინოთ პორტი 8080 (სურთ აირჩიოთ სხვა პორტი, თუ საჭიროა). -client Chrome -version 131 აირჩიოს fingerprint profile. ამ მაგალითად, იგი იყენებს built-in profile for Chrome 131. თქვენ გადაიხადოს ეს profile შეესაბამება browser / ვერსია თქვენ გსურთ – მაგალითად, თუ Chrome 130 მხარს უჭერს უახლესი ვერსია, თქვენ შეიძლება გამოიყენოთ -client Chrome -version 130. ( თქვენ შეგიძლიათ იპოვოთ სია ხელმისაწვდომი fingerprints იხილეთ JA3Proxy დოკუმენტაცია ან uTLS ბიბლიოთეკა იგი იყენებს. პროფიკები მოიცავს სხვადასხვა Chrome, Firefox ვერსია, Safari, Edge, და ა.შ.) -cert და -key აჩვენებს TLS სერტიფიკატის ფაილი, რომლებიც ჩვენ მოდული 2. -upstream 123.45.67.89:1080 არის მისამართი upstream proxy. ეს უნდა შეცვალოს თქვენი residential proxy Endpoint. მნიშვნელოვანია: JA3Proxy მოთხოვნებს, რომ ეს იქნება SOCKS5 პროქსის მისამართი__github.com__. თუ თქვენი მომწოდებელი გაძლევთ რაღაც, როგორიცაა proxy.provider.com:8000 მომხმარებლის სახელი / კონფიგურაცია, თქვენ შეგიძლიათ ცდილობენ ფორმატის მომხმარებლის სახელი:password@proxy.provider.com:8000. (JA3Proxy შეამოწმოთ string და უნდა გაქირავდეს დატვირთვა SOCKS5 თუ გაძლევთ user:pass@host:port ფორმა. თუ ეს არ მუშაობს, თქვენ შეიძლება კონფიგურაცია თქვენი residential პროქსის IP-გურცელი ან გამოიყენ თუ Docker იყენებთ, ეს არის: docker run -p 8080:8080 \ -v $(pwd)/cert.pem:/app/cert.pem -v $(pwd)/key.pem:/app/key.pem \ ghcr.io/lylemi/ja3proxy:latest \ -client Chrome -version 133 -cert /app/cert.pem -key /app/key.pem \ -upstream YOURPROXYIP:PORT ჩვენ დააყენებთ cert და კლიენტს კონტეინერში და ატვირთეთ პორტი 8080. განკუთვნილია კმაყოფილება, რათა შეიცავს თქვენი რეალური პროქსი ქსელის / ჰოსტი. როდესაც ეს გაქირავება, JA3Proxy გაქირავებს (და ნებისმიერი სასტუმრო / პორტი, რომელიც თქვენ აირჩიეთ). localhost:8080 რეალური მსოფლიოს გამოყენების შემთხვევაში - MrPorter.com MrPorter.com არის მოდის ელექტრონული კომერციული საიტზე, რომელიც, ერთად მრავალი სხვა ინდუსტრიაში, დაცულია Akamai Bot მენეჯერი. გამოყენებით მარტივი Python მოთხოვნა, როგორც დააყენა ფაილი ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად, ამჟამად. simple_request.py import requests URL = "https://www.mrporter.com/en-gb/mens/product/loewe/clothing/casual-shorts/plus-paula-s-ibiza-wide-leg-printed-cotton-blend-terry-jacquard-shorts/46376663162864673" headers = { "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", "accept-language": "en-US,en;q=0.5", "priority": "u=0, i", "sec-ch-ua": "\"Brave\";v=\"135\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\"135\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"macOS\"", "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1", "sec-gpc": "1", "service-worker-navigation-preload": "true", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36" } def main(): try: response = requests.get(URL, headers=headers, timeout=10) response.raise_for_status() print(response.text) except requests.RequestException as e: print(f"Error fetching the page: {e}") if __name__ == "__main__": main() შედეგები : Error fetching the page: HTTPSConnectionPool(host='www.mrporter.com', port=443): Read timed out. (read timeout=10) გამოყენებით და ჩვენი მოთხოვნა ამ URL- ში. თუმცა, მე ვერ იპოვებ მონაცემთა ბაზა, რომელიც აჩვენებს, რომ Python მოთხოვნები ხშირად გამოიყენება ამ დისკზე. რა თქმა უნდა, ეს განსხვავდება დისკზე, რომელიც მე მივიღე Brave Browser- ის გამოყენებით, ერთად იგივე სახურავი და User Agent. Scrapfly TLS Fingerprint ინსტრუმენტი we can view the results Scrapfly TLS Fingerprint ინსტრუმენტი ჩვენ შეგვიძლია ნახოთ შედეგები Cipher Suites- ის ნომერი განსხვავდება, ასე რომ fingerprint- ის ნომერი ასევე განსხვავდება. ახლა, დაწყეთ JA3Proxy dokker, არ დააყენეთ residential proxy, და იხილეთ, რა ხდება. docker run -p 8080:8080 \ -v $(pwd)/cert.pem:/app/cert.pem -v $(pwd)/key.pem:/app/key.pem \ ghcr.io/lylemi/ja3proxy:latest \ -client Chrome -version 131 -cert /app/cert.pem -key /app/key.pem ჩვენ მივიღებთ შეტყობინებას HTTP Proxy Server listen at :8080, with tls fingerprint 131 Chrome ასე რომ ჩვენ შეგვიძლია გამოიყენოთ localhost:8080 როგორც პროქსი ჩვენი Python მოთხოვნების სკრიპტი. კიდევ ერთი მიზეზი შეცდომების ჩემი setup იყო, რომ მე ცდილობდა გამოიყენოთ Python მოთხოვნები, რათა დაკავშირდეს JA3Proxy. მას შემდეგ, რაც გაქირავებული გარკვეული დრო, მივიღე, რომ პრობლემა იყო, რომ მოთხოვნების ბიბლიოთეკა არ მხარს უჭერს HTTP/2, ხოლო JA3Proxy გაქვთ, როდესაც გამოიყენება თანამედროვე ვერსია Chrome. ჩემი ტესტები, მე უნდა გამოიყენოთ HTTPX, როგორც აჩვენა ფაილი . request_with_proxies.py ამ შემთხვევაში, თუ მე კიდევ ერთხელ Scrapfly TLS API, პირველი ნაწილი JA3 string (Cipher ბრძანება) . ეს არის იგივე, რაც ჩემი ბრაუზერი ეს არის იგივე, რაც ჩემი ბრაუზერი როგორც საბოლოო ტესტი, თუ ჩვენ გამოიყენებთ ეს სკრინშოტი, რათა მოითხოვოთ MrPorter გვერდზე, ჩვენ შეგვიძლია ჩამოტვირთოთ იგი ნებისმიერი პრობლემა. Residential Proxy კავშირი Now that we have solved the spoofing of the TLS fingerprint, ჩვენ უბრალოდ უნდა rotate IP, რომ მიზნით საიტზე ნახავთ. JA3Proxy აქვს ვარიანტი, რომელიც დაგეხმარებათ ამ, რომელიც გამოიყენება upstream. JA3Proxy კონტაქტი შემდეგია: ./ja3proxy -addr 127.0.0.1 -client Chrome -version 131 -cert cert.pem -key key.pem -upstream socks5h://USER:PASS@PROVIDER:PORT -debug ჩვენ შეგვიძლია განიხილოს ჩვენი მოთხოვნებს ჩვენი preferred proxy მომწოდებლის გამოყენებით. გთხოვთ გაითვალისწინოთ, რომ თქვენ უნდა დაუკავშირდეთ SOCKS5, ასე რომ დარწმუნდით, რომ თქვენი მომწოდებელი მხარს უჭერს ეს ფუნქცია. მას შემდეგ, რაც IP- ის შეამოწმება, მე ვხედავ, რომ ჩემი residential rotating IP-ები მდებარეობს, და მე შეუძლია მუდმივად ჩამოტვირთოთ MRPorter გვერდები გარეშე პრობლემა. pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py 200 {"ip":"5.49.222.37"} pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py 200 {"ip":"197.244.237.29"} pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py 200 {"ip":"41.193.144.67"} pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py 200 {"ip":"102.217.240.216"} pierluigivinciguerra@Mac 85.AKAMAI-JA3PROXY % python3.10 request_with_proxies.py კონტაქტი ამ პოსტში, ჩვენ ვხედავთ, თუ როგორ შეუზღუდოთ Akamai Bot მენეჯერი MrPorter ვებ-გვერდზე. საიტის დაცვის დონე არის საშუალო, ასე რომ არ არსებობს კომფორტული ბრაუზერის დისკონტაქტი, რომ შეუზღუდოთ, მაგრამ, ჩემი გამოცდილება, ეს არის ყველაზე პოპულარული გამოყენების შემთხვევაში, როდესაც შეხვდება Akamai ჩვენი გზა. მე აირჩიე შემდეგ JA3Proxy მიმოხილვა, რათა ეს გადაწყვეტა შეიძლება გამოყენებულ იქნას სხვადასხვა Frameworks. თუ თქვენ გამოიყენებთ Scrapy, თქვენ ყოველთვის შეგიძლიათ დააყენოთ Scrapy Impersonate, მიუხედავად იმისა, რომ მისი შეზღუდვა, ან თქვენ შეგიძლიათ ცდილობენ დააყენოთ ციფერები სწორი ნორმალურად. ეს სტატია არის ნაწილი “Lab” სერია Pierluigi Vinciguerra. შეამოწმეთ მისი Substack გვერდზე დამატებითი ინფორმაციისთვის Web Scraping. ეს სტატია არის ნაწილი “Lab” სერია Pierluigi Vinciguerra. შეამოწმეთ მისი Substack გვერდზე დამატებითი ინფორმაციისთვის Web Scraping. ლაბორატორი »