Trong trường hợp hiện tại này, mọi trang web đều sử dụng xác thực và chúng tôi phải đăng nhập bằng cách nhập thông tin đăng nhập phù hợp. Nhưng đôi khi việc đăng nhập lại vào một trang web cụ thể trở nên rất bận rộn. Vì vậy, để giải quyết vấn đề này, chúng ta hãy xây dựng bot đăng nhập tự động của riêng mình bằng python
Chúng tôi sẽ sử dụng Selenium [thư viện python] để tạo bot đăng nhập tự động. Thư viện Selenium của Python giúp chúng ta truy cập tất cả các chức năng của Selenium WebDriver như Firefox, Chrome, Remote, v.v.
Cài đặt
Trước hết, chúng ta phải cài đặt selen bằng lệnh bên dưới
pip install selenium
Sau khi cài đặt Selenium thành công, chúng ta cũng phải cài đặt Chromedriver để truy cập Chrome webdriver của Selenium. Bạn có thể tải xuống tương tự từ đây [Tải xuống phiên bản theo phiên bản chrome hệ thống của bạn và theo hệ điều hành của bạn]
Đảm bảo rằng bạn đã lưu ý vị trí tải xuống chromedriver [vì nó được sử dụng trong tập lệnh python của chúng tôi]. Bây giờ Sau khi tải xuống, giải nén tệp zip và vui lòng lưu ý vị trí tệp của tệp được giải nén vì chúng tôi cần nó sau này trong mã python. [Bạn có thể tìm vị trí bằng cách nhấp vào thuộc tính và sau đó nhấp vào chi tiết]
Tự động hóa chắc chắn là một trong những kỹ năng được khao khát nhất mà một lập trình viên có thể sở hữu. Tự động hóa thường được sử dụng cho các tác vụ lặp đi lặp lại, nhàm chán, tốn thời gian hoặc không hiệu quả nếu không sử dụng tập lệnh
Với tính năng tự động hóa web, bạn có thể dễ dàng tạo bot để thực hiện các tác vụ khác nhau trên web, chẳng hạn như theo dõi giá khách sạn cạnh tranh trên Internet và xác định giá tốt nhất
Cá nhân tôi luôn thấy việc đăng nhập vào email của mình khá lặp đi lặp lại và nhàm chán, vì vậy, để có một ví dụ đơn giản giúp các bạn bắt đầu với tự động hóa web, hãy triển khai một tập lệnh Python tự động để đăng nhập bằng một cú nhấp chuột vào tài khoản Gmail
Giờ đây, vấn đề chỉ là sử dụng các thuộc tính HTML
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'2 để tìm các phần tử theo chương trình
Trong mã bên dưới, chúng tôi chỉ đơn giản là tìm kiếm trường nhập tên người dùng trước
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'2 và điền vào đó bằng văn bản mong muốn. Sau đó, chúng tôi đang tìm kiếm nút Tiếp theo sẽ chuyển tiếp bằng hoạt ảnh nhanh trước khi nhắc chúng tôi nhập mật khẩu.
Các lệnh
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'1 và
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'2 thực hiện chính xác như tên gọi của chúng —
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'1 mô phỏng thao tác nhấn phím trong phần tử mong muốn và
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'2 mô phỏng thao tác nhấp chuột
# fill in username and hit the next button username = browser.find_element_by_id['Email'] username.send_keys[usernameStr] nextButton = browser.find_element_by_id['next'] nextButton.click[]
Chúng ta có thể làm điều tương tự đối với trường nhập mật khẩu, cũng như đối với nút Đăng nhập . Tuy nhiên, hai mục này chỉ xuất hiện trên trang sau khi chuyển đổi hoạt ảnh.
Điều đó nói rằng, chúng tôi cần chương trình đợi vài giây trước khi tiếp tục tìm kiếm các phần tử. Phần lớn, giai đoạn mã này không khác với giai đoạn trước. Chúng tôi chỉ cần hướng dẫn trình duyệt đợi tối đa 10 giây trước khi tìm mục nhập mật khẩu
# wait for transition then continue to fill items password = WebDriverWait[browser, 10].until[ EC.presence_of_element_located[[By.ID, 'Passwd']]] password.send_keys[passwordStr] signInButton = browser.find_element_by_id['signIn'] signInButton.click[]Từ cuối cùng
Bạn vừa hoàn thành việc tạo bot truy cập trang web, nhập tên người dùng và mật khẩu của bạn và đăng nhập thành công cho bạn, tự động hóa toàn bộ quy trình chỉ bằng một cú nhấp chuột. Tôi biết đây là một cuộc biểu tình đơn giản, nhưng khả năng là vô tận
Cùng lưu ý đó, hãy cẩn thận với cách bạn sử dụng kỹ năng này. Một số người sử dụng bot và tập lệnh tự động để tham gia rút thăm trúng thưởng hàng nghìn lần, hoàn toàn không quan tâm đến các điều khoản và điều kiện. Những người khác sử dụng chúng cho mục đích xấu hơn
Chỉ cần đảm bảo sử dụng tự động hóa một cách có mục đích và cẩn thận, bởi vì nó thực sự là một kỹ năng rất cần thiết trong cộng đồng lập trình
Yêu cầu Selenium bao gồm ''auto-open-devtools-for-tabs'' khi khởi chạy chrome, đây là một ví dụ sử dụng cấu hình nightwatch
...
chrome: {
desiredCapabilities: {
browserName: 'chrome',
javascriptEnabled: true,
acceptSslCerts: true,
chromeOptions: {
'args': ['incognito', 'disable-extensions', 'auto-open-devtools-for-tabs']
}
}
},
...
Javascript – Trang web có thể phát hiện khi bạn đang sử dụng Selenium với chromedriver không
Về cơ bản, cách hoạt động của tính năng phát hiện Selenium là chúng kiểm tra các biến JavaScript được xác định trước xuất hiện khi chạy với Selenium. Các tập lệnh phát hiện bot thường xem bất kỳ thứ gì có chứa từ "selenium"/"webdriver" trong bất kỳ biến nào [trên đối tượng cửa sổ] và cả các biến tài liệu có tên là
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'4 và
username = Select[browser.find_element_by_name['Username']]
password = Select[browser.find_element_by_name['Password']]
username.select_by_visible_text["text"]
password.select_by_visible_text["text"]
0. Tất nhiên, tất cả điều này phụ thuộc vào trình duyệt bạn đang sử dụng. Tất cả các trình duyệt khác nhau hiển thị những thứ khác nhauĐối với tôi, tôi đã sử dụng Chrome, vì vậy, tất cả những gì tôi phải làm là đảm bảo rằng
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'4 không còn tồn tại dưới dạng biến tài liệu nữa và voilà [tải xuống mã nguồn chromedriver, sửa đổi chromedriver và biên dịch lại
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'4 dưới tên khác. ]
Đây là chức năng tôi đã sửa đổi trong chromedriver
tập tin gọi_hàm. js
function getPageCache[opt_doc] {
var doc = opt_doc || document;
//var key = '$cdc_asdjflasutopfhvcZLmcfl_';
var key = 'randomblabla_';
if [![key in doc]]
doc[key] = new Cache[];
return doc[key];
}
[Chú ý nhận xét. Tất cả những gì tôi đã làm là biến
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'4 thành
username = Select[browser.find_element_by_name['Username']]
password = Select[browser.find_element_by_name['Password']]
username.select_by_visible_text["text"]
password.select_by_visible_text["text"]
4. ]Đây là mã giả thể hiện một số kỹ thuật mà mạng bot có thể sử dụng
usernameStr = 'putYourUsernameHere' passwordStr = 'putYourPasswordHere'1
Theo người dùng szx, cũng có thể chỉ cần mở chromedriver. exe trong trình chỉnh sửa hex và chỉ cần thực hiện thay thế theo cách thủ công mà không thực sự thực hiện bất kỳ thao tác biên dịch nào