Mục lục:
- Bước 1: Thu thập vật liệu
- Bước 2: Tìm các tiêu đề cần thiết để tạo phiên
- Bước 3: Chuẩn bị mã
- Bước 4: Gửi tín hiệu phù hợp
- Bước 5: Cookie được cơ giới hóa
- Bước 6: Chìa khóa trái tim
Video: Tạo trang web Ajax với biểu mẫu đăng nhập không đồng bộ: 6 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Vấn đề: Các công cụ thêu không cho phép xác thực đăng nhập AJAX.
Tài liệu hướng dẫn này sẽ chỉ cho bạn cách đăng nhập thông qua biểu mẫu AJAX bằng Python và một mô-đun có tên là Mechanize. Spider là chương trình tự động hóa web ngày càng trở thành cách phổ biến để mọi người thu thập dữ liệu trực tuyến. Họ len lỏi khắp các trang web để thu thập các tài liệu quý giá để cung cấp cho các công ty web mạnh nhất xung quanh. Những người khác thu thập thông tin xung quanh và thu thập các tập hợp dữ liệu cụ thể để cải thiện việc ra quyết định hoặc suy ra những gì hiện đang "ở" hoặc tìm các tuyến đường du lịch rẻ nhất. Trình thu thập dữ liệu (trình thu thập thông tin web, rô bốt web hoặc trình quét màn hình) rất tuyệt vời để biến HTML goop thành một số hình thức dữ liệu thông minh, nhưng chúng tôi gặp sự cố khi nói đến các trang web hỗ trợ AJAX có các phiên kích hoạt JavaScript và cookie không thể điều hướng bằng thông thường bộ công cụ thêu. Trong hướng dẫn này, chúng tôi sẽ truy cập trang thành viên của chúng tôi tại pubmatic.com. Các bước này sẽ chỉ cho bạn một phương pháp để làm theo, nhưng trang của bạn sẽ khác. Chúc vui vẻ!
Bước 1: Thu thập vật liệu
Bạn sẽ cần bắt đầu bổ sung tài nguyên lập trình của mình. Bạn sẽ cần các chương trình sau. Sử dụng các hướng dẫn của họ để giúp bạn cài đặt những thứ này… Cài đặt FirebugĐó là một addon của FirefoxCài đặt PythonĐi tới: python.orgĐi tới: python.orgCài đặt Mô-đun cơ chế hóaGet MechanizeGet MechanizeCác công cụ thêu hữu ích khác: BeautifulSoup
Bước 2: Tìm các tiêu đề cần thiết để tạo phiên
Một con nhện được chế tạo khéo léo sẽ truy cập vào một trang web như thể đó là một trình duyệt được điều khiển bởi con người, giữ các manh mối về nguồn gốc thực sự của nó được che giấu. Một phần của sự tương tác giữa các trình duyệt và máy chủ xảy ra thông qua các yêu cầu GET và POST mà bạn có thể tìm thấy trong tiêu đề (thông tin này hiếm khi được hiển thị trên trình duyệt, nhưng rất quan trọng). Bạn có thể xem một số thông tin này bằng cách nhấn Ctrl I (trong firefox) để mở cửa sổ Thông tin trang. Để ngụy trang thành một trình duyệt nhẹ nhàng, bạn phải xác định chính mình bằng cách sử dụng các thông tin đăng nhập tương tự. Vì vậy, xem xét rằng hầu hết các trình duyệt nhện không có trình thông dịch javascript, chúng tôi sẽ phải lấy bằng cách đăng nhập thông qua một quy trình thay thế. Hãy bắt đầu bằng cách nhận thông tin tiêu đề được gửi từ trình duyệt khi bạn nhấp vào gửi. Nếu đây là một lần đăng nhập trình duyệt thông thường, bạn sẽ sử dụng Mechanize để điền vào biểu mẫu và nhấp vào gửi. Các biểu mẫu đăng nhập thông thường được gói gọn trong một thẻ… và Mechanize sẽ có thể gửi nó và thăm dò ý kiến trên trang tiếp theo mà không gặp rắc rối. Vì chúng tôi không có thẻ biểu mẫu đã hoàn thành, chức năng gửi đang được xử lý bởi javascript. Hãy kiểm tra chức năng submitForm của pubmatic. Để thực hiện việc này, trước tiên hãy mở trang web trong firefox và bật firebug bằng cách nhấp vào con đom đóm ở góc dưới bên phải. Sau đó nhấp vào tab script, sao chép tất cả mã xuất hiện và dán nó vào phần mềm chỉnh sửa văn bản yêu thích của bạn. Sau đó, bạn có thể xóa tất cả mã ngoại trừ hàm submitForm. Nó bắt đầu với hàm "submitForm (theform) {" và mọi thứ ở giữa hàm này và các hàm đóng dấu ngoặc nhọn "}". Khi phân tích hàm này, chúng tôi nhận thấy rằng một số xác thực xảy ra mang lại một biến có tên là xmldoc đang được phân tích cú pháp dưới dạng xml. Đây là một tính năng chính của AJAX, nó đã thăm dò ý kiến của máy chủ và đưa về một số tài liệu XML có chứa một cây thông tin. Nút session_id chứa session_id nếu xác thực thành công, bạn có thể biết điều này bằng cách xem đoạn mã này: "if (session_id! = Null) {// đăng nhập thành công". Bây giờ chúng tôi muốn ngăn đoạn javascript này đưa chúng tôi đến bất cứ đâu để chúng tôi có thể xem những gì đang được đăng lên máy chủ trong quá trình xác thực. Để làm điều này, chúng tôi nhận xét bất kỳ chuyển hướng cửa sổ nào giống như sau: "window.location =…". Để nhận xét điều này, hãy thêm dấu gạch chéo kép trước chúng như sau: "//window.location…" điều này ngăn không cho chạy mã. Bạn có thể tải xuống tệp Javascript bên dưới có các chỉnh sửa này. Sao chép và dán đoạn javascript đã chỉnh sửa này vào cửa sổ bên phải bảng điều khiển và nhấp vào chạy. Điều này ghi đè hàm javascript đã có trong trang với phiên bản mới của chúng tôi. Bây giờ khi bạn điền thông tin đăng nhập của mình và nhấp vào gửi, bạn sẽ thấy thông tin tiêu đề POST và GET lấp đầy bảng điều khiển, nhưng bạn sẽ không đi đâu cả. Thông tin POST là thông tin được các chức năng AJAX bắn đến máy chủ, bạn muốn nhiều như thế này càng tốt, hãy sao chép và dán thông tin đó vào sổ ghi chú.
Bước 3: Chuẩn bị mã
Trước khi chúng tôi thêm các tiêu đề mới, chúng tôi đã tìm thấy, hãy tạo một mã python đăng nhập Cơ khí hóa mẫu. Chúng tôi thực hiện việc này vì hai lý do, thứ nhất là vì chúng tôi có một thành phần hoạt động để thêm nội dung mới vào và thứ hai để bạn thấy cách bạn thường đăng nhập vào một trang web không phải AJAX-y. Mở notepad hoặc tương đương, sao chép và dán tiếp theo. Khi bạn hoàn tất, hãy lưu nó dưới dạng youfilename.py ở đâu đó bạn có thể tìm thấy. #! / Usr / bin / python # - * - coding: utf-8 - * - # Bắt đầu với nhập mô-đun của bạn: từ cơ giới hóa nhập Trình duyệt # Tạo của bạn phiên bản trình duyệt thông qua lệnh gọi hàm Browser (); br = Browser () # Đặt trình duyệt để nó bỏ qua các yêu cầu spiders.txt # Làm điều này cẩn thận, nếu trang web không thích trình duyệt, họ có thể khó chịu khi tìm thấy bạn ở đó.set_handle_robots (Sai) # Mở trang bạn muốn đăng nhập lênbr.open ("https://pubmatic.com/04_betasignin.jsp") # Vì tôi biết tên biểu mẫu, tôi có thể chỉ cần chọn biểu mẫu bằng tênbr.select_form ("đăng nhập") # Sử dụng tên của các phần tử biểu mẫu, tôi nhập tên của các thành phần biểu mẫubr ['email'] = "[email protected]" br ['password'] = "Asquid22" # br.submit () gửi biểu mẫu và kéo trang kết quả, bạn tạo một phiên bản trình duyệt mới # phản hồi bên dưới chứa trang kết quảresponse = br.submit () # Điều này sẽ in phần nội dung của trang web nhận được # print response.read ()
Bước 4: Gửi tín hiệu phù hợp
Mechanize có một chức năng dễ dàng để thêm tiêu đề vào tiêu đề POST, điều này sẽ cho phép chúng tôi xuất hiện trên cùng một trình duyệt mà bạn đã sử dụng để truy cập trang lần đầu tiên. Mở tệp có tiêu đề bạn tìm thấy bằng Firebug và chỉnh sửa tệp văn bản này cho phù hợp. Thay thế mọi thứ trong dấu ngoặc kép bằng mục thích hợp từ danh sách tiêu đề: USER_AGENT = "Mozilla / 5.0 (X11; U; Linux i686; tr-TR; rv: 1.8.1.9) Gecko / 20071102 Pardus / 2007 Firefox / 2.0.0.9" HOST = "pubmatic.com" ACCEPT = "text / xml, application / xml, application / xhtml + xml, text / html; q = 0,9, text / trơn; q = 0,8, image / png, * / *; q = 0.5 "ACCEPT_LANGUAGE =" en-us, en; q = 0.5 "ACCEPT_ENCODING =" gzip, deflate "ACCEPT_CHARSET =" ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 "KEEP_ALIVE =" 300 " CONNECTION = "keep-being" CONTENT_TYPE = "application / x-www-form-urlencoded" REFERER = "https://pubmatic.com/04_betasignin.jsp"CONTENT_LENGTH =" 60 "COOKIE =" utma = 103266945.1970108054.1210113004.1212104087.121279120110113004.1212104087.1212791; KADUSERCOOKIE = EA2C3249-E822-456E-847A-1FF0D4085A85; utmz = 103266945.1210113004.1.1.utmccn = (trực tiếp) | utmcsr = (trực tiếp) | utmcmd = (không có); no-cache "CACHE_CONTROL =" no-cache "Điều này tạo ra một tập hợp các biến mà bạn có thể sử dụng để thêm vào tiêu đề cho chúng tôi nhập mã này: br.add_header = [("Máy chủ", HOST)] br.add_headers = [("Tác nhân người dùng", USER_AGENT)] br.add_headers = [("Chấp nhận", ACCEPT)] br.add_header = [("Accept-Language", ACCEPT_LANGUAGE)] br.add_headers = [("Accept-Encoding", ACCEPT_ENCODING)] br.add_headers = [("Accept-Charset", ACCEPT_CHARSET)] br.add_header = [("Keep-Alive ", KEEP_ALIVE)] br.add_headers = [(" Kết nối ", CONNECTION)] br.add_header = [(" Loại nội dung ", CONTENT_TYPE)] br.add_header = [(" Người giới thiệu ", NGƯỜI GIỚI THIỆU)] br.add_header = [("Content-Length", CONTENT_LENGTH)] br.add_headers = [("Cookie", COOKIE)] br.add_headers = [("Pragma", PRAGMA)] br.add_headers = [("Cache-Control", CACHE_CONTROL)] Bây giờ khi chúng ta gọi hàm mở trang, tiêu đề cũng sẽ được gửi đến máy chủ. br.open ("https://pubmatic.com/04_betasignin.jsp")
Bước 5: Cookie được cơ giới hóa
Bước này là do cơ khí hóa tự động hóa việc xử lý cookie, nhưng điều quan trọng là phải biết điều gì đang xảy ra:
Khi biểu mẫu được gửi, bạn có các tiêu đề phù hợp như thể bạn đã gửi bằng hàm javascript. Sau đó, máy chủ xác thực thông tin này và tạo ID phiên và lưu nó vào cookie nếu tên người dùng và mật khẩu chính xác. Tin tốt là Mechanize tự động ăn và nạp lại cookie, do đó bạn không cần phải lo lắng về việc gửi và nhận cookie. Vì vậy, khi bạn tạo ID phiên hoạt động, bạn có thể nhập phần chỉ dành cho thành viên của trang web.
Bước 6: Chìa khóa trái tim
Bây giờ chúng tôi đã có được ID phiên và Mechanize đã lưu nó vào cookie của nó, chúng tôi có thể theo dõi javascript để xem chúng tôi cần đến đâu. Nhìn vào bên trong "if (session_id! = Null) {// đăng nhập thành công" để xem thành công ở đâu. Xem mã chuyển vị trí cửa sổ: "if (adurlbase.search (/pubmatic.com/)! = -1) {window.location =" https://pubmatic.com/05_homeloggedin.jsp "+"? V = "+ Math.random () * 10000; " chúng tôi thấy rằng chúng tôi cần truy cập một trang web có địa chỉ tại https://pubmatic.com/05_homeloggedin.jsp?v= một số ngẫu nhiên. Vì vậy, hãy chỉ tạo một số ngẫu nhiên giả để nhập và tạo một phiên bản trình duyệt mới để đọc trang mới mở: response2 = br.open ("https://pubmatic.com/05_homeloggedin.jsp?v=2703") Và điều đó nên là nó. Mã của bạn hiện đã hoàn tất, bằng cách sử dụng các tiêu đề thích hợp và cơ giới hóa trình xử lý cookie, giờ đây chúng ta có thể truy cập vào các phần tử bên trong của pubmatic. Mở terminal lên, tải gói python bên dưới và đăng nhập. Để làm điều này, hãy nhập python2.5 và sau đó là đường dẫn tệp đến tệp.py.
Đề xuất:
Biểu đồ thanh màu kép với vi mạch Thời gian chạy: 5 bước (có hình ảnh)
Biểu đồ thanh màu kép với CircuitPython: Tôi đã nhìn thấy biểu đồ thanh LED này trên trang web Pimoroni và nghĩ rằng nó có thể là một dự án không tốn kém và thú vị trong khi thực hiện khóa covid-19. Nó chứa 24 LEDS, một màu đỏ và một màu xanh lá cây, trong mỗi 12 phân đoạn, vì vậy về lý thuyết, bạn sẽ có thể hiển thị r
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Đồng hồ hoạt ảnh LED SMART được kết nối web với bảng điều khiển dựa trên web, máy chủ thời gian được đồng bộ hóa: 11 bước (có hình ảnh)
Đồng hồ hoạt hình LED thông minh được kết nối web với bảng điều khiển dựa trên web, máy chủ thời gian được đồng bộ hóa: Câu chuyện về chiếc đồng hồ này đã trở lại một chặng đường dài - hơn 30 năm. Cha tôi đã đi tiên phong trong ý tưởng này khi tôi chỉ mới 10 tuổi, rất lâu trước cuộc cách mạng đèn LED - trở lại khi đèn LED có độ sáng 1/1000 so với độ chói lóa hiện tại của chúng. Một sự thật
Cách khôi phục các thư mục đang mở khi bạn đăng nhập lại sau khi đăng xuất: 5 bước
Cách khôi phục thư mục đang mở khi đăng nhập lại sau khi đăng xuất: Được rồi, đây là tình huống, bạn đang sử dụng máy tính với rất nhiều thư mục được mở ra … Sau đó, mẹ bạn về nhà sớm hơn dự kiến! Bạn hoàn toàn biết rằng nếu cô ấy bắt gặp bạn đang sử dụng máy tính, trong khi bạn phải ở trên giường vì
Chấm bí ẩn màu vàng: Máy in của bạn có đang theo dõi bạn không ?: 5 bước (có hình ảnh)
Dấu chấm bí ẩn màu vàng: Máy in của bạn có đang theo dõi bạn không ?: Hãy tưởng tượng rằng mỗi khi bạn in tài liệu, nó sẽ tự động bao gồm một mã bí mật có thể được sử dụng để xác định máy in - và có khả năng là người đã sử dụng nó. Nghe giống như một cái gì đó từ một bộ phim gián điệp, phải không? Thật không may, kịch bản