Yêu cầu Python kích hoạt JavaScript

Ander là một nhà phát triển web đã làm việc tại các công ty khởi nghiệp hơn 12 năm. Anh ấy bắt đầu tìm kiếm mạng xã hội ngay cả trước khi những người có ảnh hưởng là một thứ. Geek đến cốt lõi

Cạo nên là trích xuất nội dung từ HTML. Nghe có vẻ đơn giản nhưng có nhiều trở ngại. Cách đầu tiên là lấy HTML đã nói. Vì vậy, chúng tôi sẽ sử dụng Python để tránh bị phát hiện

Nếu bạn đã ở đó, bạn biết nó có thể yêu cầu bỏ qua các hệ thống chống vi-rút. Quét web mà không bị chặn bằng Python - hoặc bất kỳ công cụ nào khác - không phải là một cuộc dạo chơi trong công viên

Các trang web có xu hướng bảo vệ dữ liệu và quyền truy cập của họ. Có nhiều hành động khả thi mà một hệ thống phòng thủ có thể thực hiện. Ở lại với chúng tôi để tìm hiểu làm thế nào để giảm thiểu tác động của họ. Hoặc trực tiếp bỏ qua phát hiện bot bằng Python Requests hoặc Playwright

Ghi chú. khi thử nghiệm trên quy mô lớn, đừng bao giờ sử dụng trực tiếp IP nhà của bạn. Một lỗi nhỏ hoặc trượt và bạn sẽ bị cấm

điều kiện tiên quyết

Để mã hoạt động, bạn sẽ cần cài đặt python3. Một số hệ thống đã được cài đặt sẵn. Sau đó, cài đặt tất cả các thư viện cần thiết bằng cách chạy

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
5

pip install requests playwright 
npx playwright install

Đã sao chép

Giới hạn tốc độ IP

Hệ thống bảo mật cơ bản nhất là cấm hoặc chặn các yêu cầu từ cùng một IP. Điều đó có nghĩa là một người dùng thông thường sẽ không yêu cầu một trăm trang trong vài giây, vì vậy họ tiến hành gắn thẻ kết nối đó là nguy hiểm

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83

Đã sao chép

Giới hạn tốc độ IP hoạt động tương tự như giới hạn tốc độ API, nhưng thường không có thông tin công khai về chúng. Chúng tôi không thể biết chắc chắn có bao nhiêu yêu cầu chúng tôi có thể thực hiện một cách an toàn

Nhà cung cấp dịch vụ Internet của chúng tôi chỉ định IP của chúng tôi mà chúng tôi không thể tác động hoặc che dấu. Giải pháp là thay đổi nó. Chúng tôi không thể sửa đổi IP của một máy, nhưng chúng tôi có thể sử dụng các máy khác nhau. Các trung tâm dữ liệu có thể có các IP khác nhau, mặc dù đó không phải là một giải pháp thực sự

Proxy là. Họ nhận một yêu cầu đến và chuyển tiếp nó đến đích cuối cùng. Nó không xử lý ở đó. Nhưng điều đó là đủ để che IP của chúng tôi và vượt qua khối vì trang web mục tiêu sẽ thấy IP của proxy

Proxy luân phiên

Có các Proxy miễn phí mặc dù chúng tôi không khuyên dùng chúng. Chúng có thể hoạt động để thử nghiệm nhưng không đáng tin cậy. Chúng ta có thể sử dụng một số trong số đó để thử nghiệm, như chúng ta sẽ thấy trong một số ví dụ

Bây giờ chúng tôi có một IP khác và kết nối tại nhà của chúng tôi an toàn và ổn định. Tốt. Nhưng nếu họ chặn IP của proxy thì sao?

Bạn bực bội vì trình dọn dẹp web của bạn bị chặn hết lần này đến lần khác? . ZenRows API handles rotating proxies and headless browsers for you.

Thử miễn phí

Chúng tôi sẽ không đi vào chi tiết về các proxy miễn phí. Chỉ cần sử dụng cái tiếp theo trong danh sách. Thay đổi chúng thường xuyên vì tuổi thọ của chúng thường ngắn

Mặt khác, các dịch vụ proxy trả phí cung cấp Xoay vòng IP. Dịch vụ của chúng tôi sẽ hoạt động như cũ, nhưng trang web sẽ thấy một IP khác. Trong một số trường hợp, chúng xoay vòng cho mọi yêu cầu hoặc cứ sau vài phút. Trong mọi trường hợp, họ khó cấm hơn nhiều. Và khi nó xảy ra, chúng tôi sẽ nhận được một IP mới sau một thời gian ngắn

import requests 
 
proxies = {'http': '//190.64.18.177:80'} 
response = requests.get['//httpbin.org/ip', proxies=proxies] 
print[response.json[]['origin']] # 190.64.18.162

Đã sao chép

Chúng tôi biết về những điều này; . Một số công ty lớn sẽ chặn lưu lượng truy cập từ các IP proxy hoặc trung tâm dữ liệu đã biết. Đối với những trường hợp đó, có mức proxy cao hơn. khu dân cư

Các proxy dân cư đắt tiền hơn và đôi khi bị giới hạn băng thông cung cấp cho chúng tôi các IP được sử dụng bởi những người bình thường. Điều đó ngụ ý rằng nhà cung cấp dịch vụ di động của chúng tôi có thể gán cho chúng tôi IP đó vào ngày mai. Hoặc một người bạn đã có nó ngày hôm qua. Họ không thể phân biệt được với người dùng cuối thực tế

Chúng ta có thể cạo bất cứ thứ gì chúng ta muốn, phải không? . Chưa, chưa có. Chúng tôi chỉ mới vượt qua rào cản đầu tiên, với một số rào cản nữa sẽ đến. Chúng tôi phải trông giống như người dùng hợp pháp để tránh bị gắn thẻ là bot hoặc trình quét

Tiêu đề tác nhân người dùng

Bước tiếp theo sẽ là kiểm tra tiêu đề yêu cầu của chúng tôi. Cái được biết đến nhiều nhất là Tác nhân người dùng [viết tắt là UA], nhưng còn nhiều cái khác nữa. UA tuân theo định dạng mà chúng ta sẽ thấy sau và nhiều công cụ phần mềm có định dạng riêng, chẳng hạn như GoogleBot. Đây là những gì trang web mục tiêu sẽ nhận được nếu chúng tôi trực tiếp sử dụng Yêu cầu Python hoặc cURL

import requests 
 
response = requests.get['//httpbin.org/headers'] 
print[response.json[]['headers']['User-Agent']] 
# python-requests/2.25.1

Đã sao chép

curl //httpbin.org/headers # { .. "User-Agent": "curl/7.74.0" .. }

Đã sao chép

Nhiều trang web sẽ không kiểm tra UA, nhưng đây là một dấu hiệu đáng báo động đối với những trang web thực hiện việc này. Chúng ta sẽ phải giả mạo nó. May mắn thay, hầu hết các thư viện đều cho phép tiêu đề tùy chỉnh. Theo ví dụ sử dụng Yêu cầu

import requests 
 
headers = {"User-Agent": "Mozilla/5.0 [X11; Linux x86_64] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/88.0.4324.96 Safari/537.36"} 
response = requests.get['//httpbin.org/headers', headers=headers] 
print[response.json[]['headers']['User-Agent']] # Mozilla/5.0 ...

Đã sao chép

Để nhận tác nhân người dùng hiện tại của bạn, hãy truy cập httpbin - giống như đoạn mã đang thực hiện - và sao chép nó. Việc yêu cầu tất cả các URL có cùng một UA cũng có thể kích hoạt một số cảnh báo, khiến giải pháp trở nên phức tạp hơn một chút

Lý tưởng nhất là chúng tôi sẽ có tất cả các Tác nhân người dùng có thể có hiện tại và xoay vòng chúng như chúng tôi đã làm với các IP. Vì điều đó gần như là không thể, ít nhất chúng ta có thể có một vài. Có sẵn danh sách Tác nhân người dùng để chúng tôi lựa chọn

import requests 
import random 
 
user_agents = [ 
	'Mozilla/5.0 [Windows NT 10.0; Win64; x64] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/91.0.4472.124 Safari/537.36', 
	'Mozilla/5.0 [X11; Linux x86_64] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/92.0.4515.107 Safari/537.36', 
	'Mozilla/5.0 [Windows NT 10.0; Win64; x64] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/90.0.4430.212 Safari/537.36', 
	'Mozilla/5.0 [iPhone; CPU iPhone OS 12_2 like Mac OS X] AppleWebKit/605.1.15 [KHTML, like Gecko] Mobile/15E148', 
	'Mozilla/5.0 [Linux; Android 11; SM-G960U] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/89.0.4389.72 Mobile Safari/537.36' 
] 
user_agent = random.choice[user_agents] 
headers = {'User-Agent': user_agent} 
response = requests.get['//httpbin.org/headers', headers=headers] 
print[response.json[]['headers']['User-Agent']] 
# Mozilla/5.0 [iPhone; CPU iPhone OS 12_2 like Mac OS X] ...

Đã sao chép

Hãy nhớ rằng các trình duyệt thay đổi phiên bản khá thường xuyên và danh sách này có thể lỗi thời sau vài tháng. Nếu chúng ta sử dụng xoay vòng Tác nhân người dùng, một nguồn đáng tin cậy là điều cần thiết. Chúng tôi có thể làm điều đó bằng tay hoặc sử dụng nhà cung cấp dịch vụ

Chúng tôi đã tiến gần hơn một bước, nhưng vẫn còn một lỗ hổng trong tiêu đề. hệ thống antibot cũng biết thủ thuật này và kiểm tra các tiêu đề khác cùng với Tác nhân người dùng

Bộ tiêu đề đầy đủ

Mỗi trình duyệt hoặc thậm chí phiên bản gửi các tiêu đề khác nhau. Kiểm tra hoạt động của Chrome và Firefox

________số 8

Đã sao chép

{ 
	"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
	"Accept-Encoding": "gzip, deflate, br", 
	"Accept-Language": "en-US,en;q=0.5", 
	"Host": "httpbin.org", 
	"Sec-Fetch-Dest": "document", 
	"Sec-Fetch-Mode": "navigate", 
	"Sec-Fetch-Site": "none", 
	"Sec-Fetch-User": "?1", 
	"Upgrade-Insecure-Requests": "1", 
	"User-Agent": "Mozilla/5.0 [X11; Ubuntu; Linux x86_64; rv:90.0] Gecko/20100101 Firefox/90.0" 
}

Đã sao chép

Nó có nghĩa là những gì bạn nghĩ nó có nghĩa là. Mảng trước với 5 Tác nhân người dùng chưa hoàn thành. Chúng tôi cần một mảng với một bộ tiêu đề hoàn chỉnh cho mỗi Tác nhân người dùng. Để cho ngắn gọn, chúng tôi sẽ hiển thị một danh sách với một mục. Nó đã đủ dài rồi

Trong trường hợp này, sao chép kết quả từ httpbin là không đủ. Lý tưởng nhất là sao chép nó trực tiếp từ nguồn. Cách dễ nhất để làm điều đó là từ Firefox hoặc Chrome DevTools - hoặc tương đương trong trình duyệt của bạn. Chuyển đến tab Mạng, truy cập trang web mục tiêu, nhấp chuột phải vào yêu cầu và sao chép dưới dạng cURL. Sau đó và dán các tiêu đề vào danh sách

pip install requests playwright 
npx playwright install
0

Đã sao chép

Chúng tôi có thể thêm tiêu đề Người giới thiệu để bảo mật hơn - chẳng hạn như Google hoặc trang nội bộ từ cùng một trang web. Nó sẽ che giấu sự thật rằng chúng tôi luôn yêu cầu các URL trực tiếp mà không cần tương tác. Nhưng hãy cẩn thận vì thêm người giới thiệu sẽ thay đổi nhiều tiêu đề hơn. Bạn không muốn tập lệnh Yêu cầu Python của mình bị chặn bởi những lỗi như vậy

Bánh quy

Chúng tôi đã bỏ qua các cookie ở trên vì chúng xứng đáng có một phần riêng. Cookie có thể giúp bạn bỏ qua một số phần mềm chống vi-rút hoặc chặn yêu cầu của bạn. Chúng là công cụ đắc lực mà chúng ta cần hiểu đúng

Chẳng hạn, cookie có thể theo dõi phiên người dùng và ghi nhớ người dùng đó sau khi đăng nhập. Các trang web gán cho mỗi người dùng mới một phiên cookie. Có nhiều cách để làm điều đó, nhưng chúng tôi sẽ cố gắng đơn giản hóa. Sau đó, trình duyệt của người dùng sẽ gửi cookie đó trong mỗi yêu cầu, theo dõi hoạt động của người dùng

Làm thế nào là một vấn đề? . Antibots có thể nhìn thấy mẫu đó và chặn nó vì đó không phải là cách tự nhiên để người dùng duyệt

Mặt khác, một khi bỏ qua giải pháp antibot, nó sẽ gửi các cookie có giá trị. Hệ thống phòng thủ sẽ không kiểm tra hai lần nếu phiên có vẻ hợp pháp. Kiểm tra cách bỏ qua Cloudflare để biết thêm thông tin

Cookie có giúp tập lệnh Yêu cầu Python của chúng tôi tránh bị bot phát hiện không?

Đối với các trường hợp đơn giản, không gửi cookie có thể hoạt động tốt nhất. Không cần phải duy trì một phiên

Đối với các trường hợp nâng cao hơn và phần mềm chống bot, cookie phiên có thể là cách duy nhất để tiếp cận và thu thập nội dung cuối cùng. Luôn tính đến việc phiên yêu cầu và IP phải khớp

Điều tương tự cũng xảy ra nếu chúng tôi muốn nội dung được tạo trong trình duyệt sau các cuộc gọi XHR. Chúng tôi sẽ cần sử dụng trình duyệt không đầu. Sau lần tải đầu tiên, Javascript sẽ cố lấy một số nội dung bằng lệnh gọi XHR. Chúng tôi không thể thực hiện cuộc gọi đó nếu không có cookie trên một trang web được bảo vệ

Chúng tôi sẽ sử dụng trình duyệt không đầu, cụ thể là Playwright, để tránh bị phát hiện như thế nào?

Trình duyệt không đầu

Một số hệ thống antibot sẽ chỉ hiển thị nội dung sau khi trình duyệt giải quyết được thử thách Javascript. Và chúng tôi không thể sử dụng Yêu cầu Python để mô phỏng hành vi của trình duyệt như thế. Chúng tôi cần một trình duyệt có thực thi Javascript để chạy và vượt qua thử thách

Selenium, Puppeteer và Playwright là những thư viện được biết đến và sử dụng nhiều nhất. Tránh chúng - vì lý do hiệu suất - sẽ tốt hơn và chúng sẽ làm cho quá trình cạo chậm hơn. Nhưng đôi khi, không có sự thay thế

Chúng ta sẽ xem cách chạy Playwright. Đoạn mã bên dưới hiển thị một tập lệnh đơn giản truy cập trang in các tiêu đề đã gửi. Đầu ra chỉ hiển thị Tác nhân người dùng, nhưng vì nó là một trình duyệt thực nên các tiêu đề sẽ bao gồm toàn bộ [Chấp nhận, Mã hóa chấp nhận, v.v.]

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
0

Đã sao chép

Cách tiếp cận này đi kèm với vấn đề riêng của nó. hãy xem Tác nhân người dùng. Trình duyệt Chromium bao gồm HeadlessChrome, trình duyệt này sẽ cho trang web mục tiêu biết rằng đó là trình duyệt không đầu. Họ có thể hành động theo đó

Quay lại phần tiêu đề. chúng ta có thể thêm các tiêu đề tùy chỉnh sẽ ghi đè lên các tiêu đề mặc định. Thay thế dòng trong đoạn mã trước bằng dòng này và dán Tác nhân người dùng hợp lệ

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
1

Đã sao chép

Đó chỉ là một cấp độ đầu vào với các trình duyệt không đầu. Bản thân phát hiện không đầu là một lĩnh vực và nhiều người đang nghiên cứu về nó. Một số để phát hiện nó, một số để tránh bị chặn. Ví dụ: bạn có thể truy cập pixelcan bằng trình duyệt thực tế và trình duyệt không đầu. Để được coi là "kiên định", bạn sẽ cần phải làm việc chăm chỉ

Nhìn vào ảnh chụp màn hình bên dưới, được chụp khi truy cập pixelcan bằng Playwright. Xem UA? .

Chúng tôi có thể vượt qua

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
6 và nhà viết kịch sẽ đặt tác nhân người dùng trong javascript và tiêu đề cho chúng tôi. Tốt đẹp

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
2

Đã sao chép

Đối với các trường hợp nâng cao hơn, bạn có thể dễ dàng thêm tính năng tàng hình của Playwright vào tập lệnh của mình và khiến việc phát hiện khó khăn hơn. Nó xử lý sự không nhất quán giữa các tiêu đề và API Javascript của trình duyệt, trong số những thứ khác

Tóm lại, việc có phạm vi bảo hiểm 100% rất phức tạp, nhưng bạn sẽ không cần đến nó trong hầu hết thời gian. Các trang web luôn có thể thực hiện một số kiểm tra phức tạp hơn. WebGL, sự kiện chạm hoặc trạng thái pin

Bạn sẽ không cần những tính năng bổ sung đó trừ khi cố gắng loại bỏ một trang web yêu cầu bỏ qua giải pháp chống bot, như Akamai. Và đối với những trường hợp đó, nỗ lực bổ sung đó sẽ là bắt buộc. Và đòi hỏi, thành thật mà nói

Giới hạn địa lý hoặc Geoblocking

Bạn đã bao giờ thử xem CNN từ bên ngoài nước Mỹ chưa?

Đó gọi là khóa địa lý. Chỉ các kết nối từ bên trong Hoa Kỳ mới có thể xem CNN trực tiếp. Để bỏ qua điều đó, chúng ta có thể sử dụng Mạng riêng ảo [VPN]. Sau đó, chúng tôi có thể duyệt như bình thường, nhưng trang web sẽ thấy IP cục bộ nhờ VPN

Điều tương tự cũng có thể xảy ra khi quét các trang web bằng khóa địa lý. Có một tương đương cho proxy. proxy định vị địa lý. Một số nhà cung cấp proxy cho phép chúng tôi chọn từ danh sách các quốc gia. Khi được kích hoạt, chúng tôi sẽ chỉ nhận được các IP cục bộ từ Hoa Kỳ chẳng hạn

Mẫu hành vi

Ngày nay, việc chặn IP và Tác nhân người dùng là không đủ. Chúng trở nên không thể quản lý và cũ kỹ trong vài giờ, nếu không muốn nói là vài phút. Miễn là chúng tôi thực hiện các yêu cầu với IP sạch và Tác nhân người dùng trong thế giới thực, chúng tôi chủ yếu an toàn. Có nhiều yếu tố liên quan hơn, nhưng hầu hết các yêu cầu phải hợp lệ

Tuy nhiên, hầu hết các phần mềm chống bot hiện đại đều sử dụng máy học và các mẫu hành vi, không chỉ các điểm đánh dấu tĩnh [IP, UA, định vị địa lý]. Điều đó có nghĩa là chúng tôi sẽ bị phát hiện nếu chúng tôi luôn thực hiện các hành động giống nhau theo cùng một thứ tự

  1. Đi đến trang chủ
  2. Nhấp vào nút "Mua sắm"
  3. Cuộn xuống
  4. Tới trang 2
  5. ...
Sau một vài ngày, việc khởi chạy cùng một tập lệnh có thể khiến mọi yêu cầu bị chặn. Nhiều người có thể thực hiện những hành động giống nhau, nhưng bot có điều gì đó khiến chúng trở nên rõ ràng. tốc độ, vận tốc. Với phần mềm, chúng tôi sẽ thực hiện từng bước một cách tuần tự, trong khi người dùng thực tế sẽ mất một giây, sau đó nhấp chuột, cuộn xuống từ từ bằng con lăn chuột, di chuyển chuột đến liên kết và nhấp chuột

Có thể không cần phải giả tạo tất cả, nhưng hãy nhận thức được những vấn đề có thể xảy ra và biết cách đối mặt với chúng

Chúng ta phải suy nghĩ những gì chúng ta muốn. Có lẽ chúng tôi không cần yêu cầu đầu tiên đó vì chúng tôi chỉ yêu cầu trang thứ hai. Chúng tôi có thể sử dụng nó như một điểm vào, không phải trang chủ. Và lưu một yêu cầu. Nó có thể mở rộng tới hàng trăm URL trên mỗi tên miền. Không cần truy cập từng trang theo thứ tự, cuộn xuống, nhấp vào trang tiếp theo và bắt đầu lại

Để loại bỏ kết quả tìm kiếm, khi chúng tôi nhận ra mẫu URL để phân trang, chúng tôi chỉ cần hai điểm dữ liệu. số lượng mục và mục trên mỗi trang. Và hầu hết thời gian, thông tin đó xuất hiện trên trang đầu tiên hoặc yêu cầu

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
3

Đã sao chép

Một yêu cầu cho chúng tôi thấy rằng có 48 trang. Bây giờ chúng ta có thể xếp hàng chúng. Kết hợp với các kỹ thuật khác, chúng tôi sẽ lấy nội dung từ trang này và thêm 47 nội dung còn lại. Để loại bỏ chúng bằng cách bỏ qua các hệ thống chống bot, chúng ta có thể

  • Xáo trộn thứ tự trang để tránh phát hiện mẫu
  • Sử dụng các IP và Tác nhân người dùng khác nhau để mỗi yêu cầu giống như một yêu cầu mới
  • Thêm độ trễ giữa một số cuộc gọi
  • Sử dụng Google làm người giới thiệu ngẫu nhiên

Chúng ta có thể viết một số đoạn mã kết hợp tất cả những thứ này, nhưng tùy chọn tốt nhất trong cuộc sống thực là sử dụng một công cụ có tất cả như Scrapy, pyspider, trình thu thập thông tin nút [Node. js] hoặc Colly [Đi]. Ý tưởng là các đoạn trích là để tự hiểu từng vấn đề. Nhưng đối với các dự án thực tế, quy mô lớn, việc tự mình xử lý mọi thứ sẽ quá phức tạp

mã ngẫu nhiên

Ngay cả yêu cầu được chuẩn bị tốt nhất cũng có thể bị bắt và hiển thị hình ảnh xác thực. Ngày nay, việc giải captcha là có thể đạt được - Anti-Captcha và 2Captcha - nhưng lãng phí thời gian và tiền bạc. Giải pháp tốt nhất là tránh chúng. Cách tốt nhất thứ hai là quên yêu cầu đó đi và thử lại

Ngoại lệ là hiển nhiên. các trang web luôn hiển thị Captcha trong lần truy cập đầu tiên. Chúng ta phải giải quyết nó nếu không có cách nào để vượt qua nó. Và sau đó, sử dụng cookie phiên để tránh bị thách thức lần nữa

Nghe có vẻ phản trực giác, nhưng đợi một giây và thử lại cùng một yêu cầu với một IP và bộ tiêu đề khác sẽ nhanh hơn giải hình ảnh xác thực. Hãy tự mình thử và cho chúng tôi biết về trải nghiệm 😉

Đăng nhập Wall hoặc Paywall

Một số trang web muốn hiển thị hoặc chuyển hướng người dùng đến trang đăng nhập thay vì hình ảnh xác thực. Sau một vài lượt truy cập, Instagram sẽ chuyển hướng người dùng ẩn danh và Phương tiện sẽ hiển thị tường phí

Đối với hình ảnh xác thực, một giải pháp có thể là gắn thẻ IP là bẩn, quên yêu cầu và thử lại. Các thư viện thường theo các chuyển hướng theo mặc định nhưng cung cấp tùy chọn không cho phép chúng. Lý tưởng nhất là chúng tôi chỉ không cho phép chuyển hướng đến đăng nhập, đăng ký hoặc các trang cụ thể, không phải tất cả các trang đó

Trong ví dụ này, chúng tôi sẽ theo dõi các chuyển hướng cho đến khi vị trí của nó chứa
import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
7. Chúng tôi sẽ xếp hàng trang đó với độ trễ và thử lại trong một dự án thực tế

import requests 
 
response = requests.get['//httpbin.org/ip'] 
print[response.json[]['origin']] 
# xyz.84.7.83
4

Đã sao chép

Hãy là một công dân Internet tốt

Chúng tôi có thể sử dụng một số trang web để thử nghiệm, nhưng hãy cẩn thận khi thực hiện tương tự trên quy mô lớn. Hãy cố gắng trở thành một công dân internet tốt và đừng gây ra -nhỏ- DDoS. Giới hạn tương tác của bạn trên mỗi miền. Amazon có thể xử lý hàng nghìn yêu cầu mỗi giây. Nhưng không phải tất cả các trang web mục tiêu sẽ

Chúng tôi luôn nói về chế độ duyệt "chỉ đọc". Truy cập một trang và đọc nội dung của nó. Không bao giờ gửi biểu mẫu hoặc thực hiện các hành động tích cực với mục đích xấu

Nếu chúng ta thực hiện một cách tiếp cận tích cực hơn, một số yếu tố khác sẽ quan trọng. tốc độ viết, di chuyển chuột, điều hướng mà không cần nhấp chuột, duyệt nhiều trang cùng lúc, v.v. Phần mềm ngăn chặn bot đặc biệt tích cực với các hành động tích cực. Vì lý do bảo mật

Chúng tôi sẽ không thảo luận về phần này, nhưng những hành động này sẽ cung cấp cho họ những lý do mới để chặn yêu cầu. Một lần nữa, những công dân tốt không thử đăng nhập ồ ạt. Chúng tôi đang nói về việc cạo, không phải các hoạt động độc hại

Đôi khi các trang web làm cho việc thu thập dữ liệu trở nên khó khăn hơn, có thể không có mục đích. Nhưng với các công cụ giao diện người dùng hiện đại, các lớp CSS có thể thay đổi hàng ngày, làm hỏng các tập lệnh được chuẩn bị kỹ lưỡng. Để biết thêm chi tiết, hãy đọc mục trước của chúng tôi về cách cạo dữ liệu trong Python

Phần kết luận

Chúng tôi muốn bạn nhớ những trái cây treo thấp

  1. Proxy luân phiên IP
  2. Proxy dân cư cho các mục tiêu đầy thách thức
  3. Toàn bộ tiêu đề, bao gồm Tác nhân người dùng
  4. Bỏ qua phát hiện bot với Playwright khi yêu cầu thử thách Javascript - có thể thêm mô-đun tàng hình
  5. Tránh các mẫu có thể gắn thẻ bạn là bot

Còn nhiều nữa, và có lẽ còn nhiều nữa chúng tôi chưa đề cập. Nhưng với những kỹ thuật này, bạn sẽ có thể thu thập dữ liệu và cạo theo tỷ lệ. Xét cho cùng, việc quét web mà không bị chặn bằng python là có thể nếu bạn biết cách

Liên hệ với chúng tôi nếu bạn biết thêm các thủ thuật quét trang web hoặc nghi ngờ về việc áp dụng chúng

Hãy nhớ rằng, chúng tôi đã đề cập đến việc cạo và tránh bị chặn, nhưng còn nhiều điều nữa. thu thập thông tin, chuyển đổi và lưu trữ nội dung, mở rộng cơ sở hạ tầng, v.v. Giữ nguyên

Các yêu cầu có thể xử lý JavaScript không?

Yêu cầu-HTML cũng có thể xử lý JavaScript .

Làm cách nào để đọc JavaScript bằng Python?

JS2PY hoạt động bằng cách dịch trực tiếp JavaScript sang Python . Nó chỉ ra rằng bạn có thể chạy JS trực tiếp từ mã Python mà không cần cài đặt các công cụ lớn bên ngoài như V8. Để sử dụng mô-đun, trước tiên mô-đun phải được cài đặt vào hệ thống, vì mô-đun không được tích hợp sẵn. Để sử dụng mô-đun, nó phải được nhập.

Các yêu cầu Python có bị phản đối không?

Khi chúng ta bước vào năm thứ ba của Python 2. 7 sắp hết hạn sử dụng, Các yêu cầu đã quyết định đã đến lúc bắt đầu ngừng hỗ trợ của chúng tôi . Mặc dù chúng tôi vẫn chưa xác nhận ngày, nhưng chúng tôi muốn đưa ra thông báo sớm rằng điều này sẽ đến vào một thời điểm nào đó trong năm 2022.

yêu cầu được xây dựng

Requests là một trong những thư viện Python phổ biến nhất không có trong Python .

Chủ Đề