Sử dụng httpx như một trình duyệt Web của Python

Gói httpx của Python giúp bạn tạo ra một trình duyệt Web dòng lệnh. Sau khi cài đặt, bạn có thể sử dụng nó để xem dữ liệu từ các trang web. Như thường lệ, cách dễ nhất để cài đặt nó là dùng pip:

python -m pip install httpx --user

Cách sử dụng httpx, một ứng dụng web client của Python

Để sử dụng thư viện này, bạn hãy import nó vào một tập lệnh Python, sau đó sử dụng hàm .get để tìm nạp dữ liệu từ một địa chỉ web:

import httpx
result = httpx.get("https://httpbin.org/get?hello=world")
result.json()["args"]

Đây là kết quả từ tập lệnh đơn giản đó:

{'hello': 'world'}

HTTP response trong httpx

Theo mặc định, thư viện này sẽ không phát sinh lỗi ở status không phải 200.

Hãy thử code này:

result = httpx.get("https://httpbin.org/status/404")
result

Kết quả:
<Response [404 NOT FOUND]>

Bạn có thể chuyển nó thành một câu trả lời rõ ràng. Thêm trình xử lý ngoại lệ này:

try:
    result.raise_for_status()
except Exception as exc:
    print("woops", exc)

Đây là kết quả:

woops Client error '404 NOT FOUND' for url 'https://httpbin.org/status/404'
    For more information check: https://httpstatuses.com/404

Tuỳ chỉnh client

Sẽ tốt hơn khi sử dụng một ứng dụng client tùy chỉnh cho bất kỳ thứ gì ngoại trừ tập lệnh đơn giản nhất. Ngoài những cải tiến hiệu suất, chẳng hạn như vùng kết nối, đây là một nơi tốt để định cấu hình client.

Ví dụ: bạn có thể đặt URL tùy chỉnh:

client = httpx.Client(base_url="https://httpbin.org")
result = client.get("/get?source=custom-client")
result.json()["args"]

Đầu ra mẫu:
{'source': 'custom-client'}

Điều này hữu ích cho một tình huống điển hình trong đó bạn sử dụng client để nói chuyện với một máy chủ cụ thể. Ví dụ: sử dụng cả base_url và auth, bạn có thể xây dựng một bản tóm tắt cho một ứng dụng client đã xác thực:

client = httpx.Client(
    base_url="https://httpbin.org",
    auth=("good_person", "secret_password"),
)
result = client.get("/basic-auth/good_person/secret_password")
result.json()

Đầu ra:

{'authenticated': True, 'user': 'good_person'}

Một trong những thứ tốt hơn mà bạn có thể sử dụng là xây dựng ứng dụng client ở một chức năng “chính” cấp cao nhất và sau đó khai triển nó ra xung quanh. Điều này cho phép các chức năng khác sử dụng ứng dụng client và cho phép chúng được kiểm tra với ứng dụng client được kết nối với ứng dụng WSGI cục bộ.

def get_user_name(client):
    result = client.get("/basic-auth/good_person/secret_password")
    return result.json()["user"]

get_user_name(client)
    'good_person'

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'application/json')])
    return [b'{"user": "pretty_good_person"}']
fake_client = httpx.Client(app=application, base_url="https://fake-server")
get_user_name(fake_client)

Đầu ra:
'pretty_good_person'

Vậy là bạn đã tìm hiểu xong cách sử dụng httpx rồi đó. Ngoài ra, bạn cũng có thể tạo Keylogger bằng python một cách đơn giản nhất tại đây.

Previous Post Next Post