Bỏ để qua phần nội dung

Hướng dẫn đầy đủ về thu thập dữ liệu từ API ứng dụng di động

Trong thế giới ưu tiên thiết bị di động hiện đại của chúng ta, các ứng dụng di động đang bùng nổ về mức độ phổ biến và thay thế các trang web truyền thống cho nhiều dịch vụ. Hiện có hơn 5 triệu ứng dụng có sẵn trên các cửa hàng ứng dụng lớn. Người dùng điện thoại thông minh trung bình có hơn 80 ứng dụng được cài đặt. Và ứng dụng dành cho thiết bị di động chiếm 90% thời gian trực tuyến trong ứng dụng so với web di động.

Điều này có nghĩa là gì? Ứng dụng di động đang trở thành một trong những nguồn dữ liệu phong phú và có giá trị nhất trong thế giới kỹ thuật số ngày càng phát triển của chúng ta. Dữ liệu vị trí, số liệu thống kê sử dụng, hồ sơ, giao dịch, v.v. có thể được trích xuất từ ​​lưu lượng truy cập ứng dụng dành cho thiết bị di động.

Điều này mang đến cơ hội lớn cho các doanh nghiệp, nhà nghiên cứu và nhà phát triển. Nhưng việc thu thập dữ liệu này đòi hỏi phải chặn liên lạc giữa các ứng dụng và API phụ trợ của chúng. Đó là vì các ứng dụng di động sử dụng kết nối HTTPS được mã hóa để truyền dữ liệu một cách an toàn.

Chỉ cần đánh hơi lưu lượng truy cập mạng sẽ không tiết lộ nội dung. Bạn cần một cách để giải mã lưu lượng.

Nhập máy chủ proxy trung gian (MITM).

Trong hướng dẫn toàn diện, 4,000 từ này, bạn sẽ học:

  • Chính xác thì proxy MITM là gì và nó hoạt động như thế nào
  • Từng bước cách thiết lập proxy MITM của riêng bạn để phân tích lưu lượng truy cập ứng dụng dành cho thiết bị di động
  • Cách sử dụng proxy để quan sát và thiết kế đối chiếu API ứng dụng di động
  • Các công cụ và kỹ thuật để thu thập dữ liệu có giá trị từ API ứng dụng di động
  • Các phương pháp hay nhất về proxy MITM để thu thập dữ liệu có trách nhiệm

Nếu bạn muốn trải nghiệm thực tế việc trích xuất dữ liệu từ các ứng dụng như Tinder, Airbnb, Yelp, v.v., bạn đã đến đúng nơi. Bắt đầu nào!

Proxy trung gian (MITM) là gì?

Để hiểu cách proxy MITM cho phép thu thập dữ liệu ứng dụng di động, trước tiên bạn cần hiểu mã hóa HTTPS làm gì.

HTTPS sử dụng chứng chỉ SSL/TLS để mã hóa thông tin liên lạc giữa máy khách (ví dụ: ứng dụng dành cho thiết bị di động) và máy chủ (ví dụ: chương trình phụ trợ API). Điều này ngăn chặn bất kỳ ai theo dõi mạng xem hoặc giả mạo lưu lượng truy cập.

Nhưng điều gì sẽ xảy ra nếu bạn có thể chặn lưu lượng truy cập đó bằng cách đặt mình ở giữa—giữa máy khách và máy chủ đích?

Đây chính xác là những gì proxy MITM thực hiện. Proxy đóng vai trò trung gian cho tất cả lưu lượng truy cập đi qua:

Máy khách <—-> Proxy MITM <—-> Máy chủ đích

Proxy thiết lập các kết nối SSL riêng biệt với máy khách và máy chủ để giải mã lưu lượng truy cập của chúng. Sau đó, nó có thể kiểm tra, phân tích và thậm chí sửa đổi các yêu cầu văn bản gốc trước khi mã hóa lại và gửi chúng đi.

Bằng cách cài đặt chứng chỉ gốc của proxy làm cơ quan đáng tin cậy, nó có thể mạo danh bất kỳ miền nào một cách hiệu quả. Điều này cho phép chặn liên tục mà không kích hoạt cảnh báo bảo mật của trình duyệt.

Một số proxy MITM phổ biến bao gồm:

ProxyNền tảngChú ý
mitmproxyMac, Windows, LinuxCông cụ dựa trên bảng điều khiển mạnh mẽ
Ủy nhiệm CharlesMac, Windows, LinuxGUI, hỗ trợ cấu hình thiết bị
Tay đấmWindowsCó thể gỡ lỗi lưu lượng truy cập từ ứng dụng Windows

Trong hướng dẫn này, chúng tôi sẽ trình bày cách sử dụng mitmproxy vì nó miễn phí, mã nguồn mở và thiết lập nhanh chóng.

Bây giờ, hãy xem cách định cấu hình thiết bị di động để định tuyến lưu lượng truy cập thông qua proxy MITM của bạn.

Bước 1: Cài đặt mitmproxy trên máy tính của bạn

Bước đầu tiên là cài đặt và khởi động máy chủ proxy mitmproxy trên máy tính để bàn hoặc máy tính xách tay của bạn. Nó sẽ chặn các yêu cầu từ các thiết bị được cấu hình để định tuyến qua nó.

Cài đặt trên macOS

Nếu bạn đang dùng Mac, cách dễ nhất để cài đặt mitmproxy là thông qua Homebrew:

$ brew install mitmproxy

Cài đặt trên Linux

Trên Linux, hãy sử dụng trình quản lý gói của bản phân phối của bạn, ví dụ:

$ sudo apt install mitmproxy # Debian/Ubuntu
$ sudo dnf install mitmproxy # Fedora

Cài đặt trên Windows

Người dùng Windows có thể tải xuống bản phát hành nhị phân chính thức từ mitmproxy.org. Đảm bảo chọn phiên bản mitmproxy mới nhất, không phải tiện ích mitmdump.

Bắt đầu proxy

Sau khi cài đặt, hãy khởi động mitmproxy trên cổng mặc định 8080:

$ mitmproxy

Bạn sẽ thấy các yêu cầu bị chặn xuất hiện trong bảng điều khiển mitmproxy:

bảng điều khiển mitmproxy

Để ứng dụng này chạy ở chế độ nền khi bạn định cấu hình thiết bị di động của mình để sử dụng proxy.

Bước 2: Định cấu hình thiết bị di động để định tuyến qua mitmproxy

Bây giờ chúng ta cần định cấu hình thiết bị di động để định tuyến lưu lượng truy cập của nó thông qua proxy mitmproxy để chặn.

Dưới đây là các bước dành cho các hệ điều hành di động phổ biến:

Trên iPhone/iOS

  1. Kết nối iPhone của bạn với cùng mạng Wi-Fi với máy tính chạy mitmproxy.

  2. Đi tới Cài đặt > Wi-Fi và chọn mạng hiện tại của bạn.

  3. Cuộn xuống và chạm Định cấu hình Proxy.

  4. Chọn Hướng dẫn sử dụng để đặt chi tiết proxy của riêng bạn:

    • Server: Địa chỉ IP máy tính của bạn trong mạng (ví dụ 192.168.1.10)

    • Cổng: 8080

Điều này định tuyến tất cả lưu lượng truy cập thiết bị qua máy tính của bạn và mitmproxy!

Trên Android

  1. Kết nối thiết bị Android của bạn với cùng mạng Wi-Fi làm proxy.

  2. Vào Cài đặt > Wi-Fi > Tùy chọn nâng cao > Proxy và chọn Hướng dẫn sử dụng.

  3. Nhập địa chỉ IP máy tính của bạn vào trường Tên máy chủ và 8080 cho Cổng.

  4. Nhấn Lưu để áp dụng cấu hình proxy.

Trên Windows Phone

  1. Từ màn hình bắt đầu, vuốt sang trái tới Danh sách ứng dụng và chạm vào Cài đặt.

  2. Tập WiFi và nhấn và giữ mạng được kết nối của bạn. Lựa chọn Chỉnh sửa.

  3. Tập Hiển thị tùy chọn nâng cao sau đó Đặt proxy sang hướng dẫn sử dụng.

  4. Nhập địa chỉ IP máy tính của bạn và 8080 cho cổng.

  5. Tập Lưu để kết nối thông qua proxy.

Và thế là xong! Thiết bị di động của bạn bây giờ sẽ định tuyến tất cả lưu lượng truy cập thông qua mitmproxy để chặn.

Bước 3: Cài đặt Chứng chỉ mitmproxy trên Thiết bị di động

Tại thời điểm này, bạn sẽ thấy lưu lượng truy cập trong bảng điều khiển mitmproxy từ thiết bị di động của mình. Tuy nhiên, hầu hết các ứng dụng đều sử dụng HTTPS nên bạn sẽ không thể xem nội dung.

Để giải mã lưu lượng HTTPS, bạn cần cài đặt chứng chỉ mitmproxy làm cơ quan cấp chứng chỉ gốc đáng tin cậy trên thiết bị di động của mình.

Mitmproxy cung cấp một trang web tiện dụng tại http://mitm.it điều đó sẽ tạo chứng chỉ cho nền tảng thiết bị cụ thể của bạn.

Đơn giản chỉ cần đi đến http://mitm.it trên trình duyệt của thiết bị di động và nhấp vào liên kết dành cho hệ điều hành của bạn:

trang web mitm.it

Sau đó cài đặt chứng chỉ đã tải xuống trên thiết bị của bạn:

Trên iOS

  1. Đi tới Cài đặt > Chung > Giới thiệu > Cài đặt tin cậy chứng chỉ

  2. Kích hoạt tính năng mitmproxy Giấy chứng nhận

Trên Android

  1. Lưu mitmproxy-ca-cert.pem tập tin ở đâu đó trên bộ nhớ thiết bị

  2. Đi tới Cài đặt > Bảo mật > Cài đặt từ bộ nhớ

  3. Chọn hình ba gạch mitmproxy-ca-cert.pem hồ sơ

Trên Windows Phone

  1. Đi tới Hệ thống > Mã hóa > Nhập chứng chỉ

  2. Chọn tải về mitmproxy-ca-cert.crt

Bạn có thể cần đặt chứng chỉ mitmproxy là đáng tin cậy cho VPN hoặc ứng dụng. Giờ đây, mitmproxy có thể chặn ngay cả lưu lượng truy cập được mã hóa HTTPS từ thiết bị.

Chỉ bật chứng chỉ khi bạn cần gỡ lỗi lưu lượng truy cập và tắt khi hoàn tất! Không để lộ dữ liệu ứng dụng khác một cách không cần thiết.

Được rồi, đã đến phần thú vị…hãy xem cách quan sát lưu lượng truy cập để đảo ngược kỹ thuật và tìm kiếm các API ứng dụng di động!

Bước 4: Quan sát và đảo ngược API ứng dụng di động

Mở ứng dụng di động mà bạn muốn nghiên cứu trên thiết bị được định cấu hình để sử dụng proxy. Ví dụ: tôi sẽ sử dụng ứng dụng giao đồ ăn Swiggy.

Trong bảng điều khiển mitmproxy trên máy tính, bạn sẽ thấy các yêu cầu đến từ địa chỉ IP của thiết bị di động của mình.

Lọc chế độ xem theo miền của API bạn muốn phân tích. Đối với Swiggy, đây là prod-api.swiggy.com:

Lưu lượng API Swiggy trong mitmproxy

Khi bạn tương tác với ứng dụng dành cho thiết bị di động, hãy tìm kiếm các mẫu trong yêu cầu API. Bạn có thể mở rộng yêu cầu để xem chi tiết đầy đủ:

Yêu cầu API mở rộng

Việc kiểm tra các luồng ứng dụng khác nhau sẽ cho biết điểm cuối nào tồn tại trên API phụ trợ và dữ liệu nào chúng trả về. Để cạo, chúng tôi quan tâm đến GET yêu cầu trả về dữ liệu JSON.

Dựa trên việc quan sát lưu lượng truy cập từ Swiggy, chúng ta có thể thấy:

  • /restaurants/list/v5 trả về danh sách các nhà hàng cho một vị trí
  • /menu/v4 lấy thực đơn cho một nhà hàng cụ thể
  • /geocode/v1 chuyển đổi địa chỉ thành tọa độ vĩ độ/lng

Và như thế. Điều này cho phép chúng tôi hiểu và vạch ra các điểm cuối API.

Bây giờ chúng ta có thể sao chép các yêu cầu API để trích xuất dữ liệu. Ví dụ, gọi /restaurants/list/v5 với latlng tham số trả về danh sách các nhà hàng JSON:

import requests

api_url = ‘https://prod-api.swiggy.com/restaurants/list/v5‘

params = {
  ‘lat‘: 12.972442, 
  ‘lng‘: 77.580643 
}

response = requests.get(api_url, params=params)
data = response.json() 

for restaurant in data:
  print(restaurant[‘name‘], restaurant[‘area‘])

Thao tác này sẽ in ra tên và khu vực của các nhà hàng Swiggy gần một địa điểm nhất định. Proxy cho phép chúng tôi xem cách ứng dụng hoạt động và thiết kế ngược API để thu thập dữ liệu.

Chiến lược thu thập dữ liệu cho API ứng dụng di động

Sau khi kiểm tra lưu lượng API của ứng dụng để hiểu các điểm cuối và thông số, bạn có thể bắt đầu thu thập dữ liệu theo chương trình.

Dưới đây là một số thực tiễn tốt nhất:

  • Sử dụng proxy – Xoay vòng các IP dân cư khác nhau để tránh bị giới hạn tỷ lệ chặn.

  • Chọn ngẫu nhiên đầu vào – Thay đổi tọa độ địa lý, ID người dùng, v.v. để trông giống con người hơn.

  • Yêu cầu ga – Thêm độ trễ giữa các yêu cầu để giới hạn âm lượng.

  • Dữ liệu bộ nhớ đệm – Lưu trữ các phản hồi để tránh các yêu cầu trùng lặp.

  • Xử lý lỗi – Thử lại các yêu cầu không thành công và xử lý các lỗi HTTP một cách khéo léo.

  • Phân trang dữ liệu – Theo liên kết phân trang trong phản hồi để trích xuất tất cả dữ liệu.

  • Sử dụng POST khi cần – Một số hành động như đặt hàng yêu cầu yêu cầu POST.

  • Phân tích cú pháp nhanh chóng – Chỉ trích xuất dữ liệu bạn cần thay vì phân tích mọi thứ.

  • Xóa siêu dữ liệu – Xóa ID duy nhất, dấu thời gian, v.v. có thể xác định bản ghi.

  • Ở lại đến ngày – Kiểm tra các thay đổi API sau khi cập nhật ứng dụng.

Với một chút sáng tạo, bạn có thể xây dựng các công cụ dọn dẹp để trích xuất tất cả các loại dữ liệu có giá trị từ API ứng dụng di động. Chỉ cần đảm bảo tuân thủ cẩn thận Điều khoản dịch vụ và sử dụng dữ liệu một cách có trách nhiệm!

Quét API di động có trách nhiệm

Giống như bất kỳ hình thức thu thập dữ liệu web nào, việc thu thập dữ liệu từ API di động đi kèm với một số cân nhắc về mặt đạo đức:

  • Đừng làm quá tải máy chủ – Giới hạn khối lượng yêu cầu để giảm thiểu tác động.

  • Hạn chế sử dụng – Chỉ thu thập dữ liệu mà bạn có thể biện minh cho nhu cầu.

  • Tôn trọng điều khoản – Tránh vi phạm các điều khoản dịch vụ hoặc NDA.

  • Bảo vệ dữ liệu – Lưu trữ dữ liệu an toàn và giảm thiểu thời gian lưu giữ.

  • Hủy nhận dạng dữ liệu – Xóa thông tin cá nhân không cần thiết cho mục đích của bạn.

  • Kiểm tra pháp luật – Một số địa điểm quy định các loại thu thập dữ liệu.

  • Sử dụng một cách khôn ngoan – Dữ liệu phải cung cấp giá trị chứ không chỉ được thu thập vì bạn có thể.

Sự minh bạch và đạo đức là rất quan trọng. Với dữ liệu tuyệt vời đi kèm với trách nhiệm lớn lao!

Kết luận

Tôi hy vọng hướng dẫn này cung cấp cho bạn cái nhìn toàn diện về việc chặn dữ liệu ứng dụng di động bằng proxy trung gian. Những điểm chính:

  • Proxy MITM cho phép bạn chặn lưu lượng HTTPS từ ứng dụng di động bằng cách cài đặt chứng chỉ proxy.

  • Các công cụ như mitmproxy giúp việc kiểm tra lưu lượng truy cập này trở nên dễ hiểu cách ứng dụng giao tiếp với các chương trình phụ trợ API.

  • Kỹ thuật đảo ngược các điểm cuối API cho phép sao chép các yêu cầu để lấy dữ liệu ứng dụng di động.

  • Proxy, điều tiết và các kỹ thuật khác có thể được sử dụng để thu thập dữ liệu ứng dụng di động một cách hiệu quả trên quy mô lớn.

  • Đảm bảo bạn loại bỏ các API di động một cách có đạo đức và hợp pháp.

Các ứng dụng di động cung cấp rất nhiều dữ liệu đang chờ được khai thác. Bây giờ bạn đã biết cách sử dụng proxy MITM để truy cập nó, khả năng là vô tận!

Bạn sẽ bắt đầu thu thập dữ liệu từ những ứng dụng thú vị nào? Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào khác về quét proxy di động!

Tham gia vào cuộc đối thoại

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *