Cơ sở:
Bạn thích công việc lập trình mới của mình tại một tập đoàn lớn. Tuy nhiên, bạn không được phép duyệt web vì máy tính của bạn chỉ có CLI. Họ cũng chạy quét tất cả các ổ cứng của nhân viên, vì vậy bạn không thể tải xuống một trình duyệt web CLI lớn. Bạn quyết định tạo một trình duyệt văn bản đơn giản, nhỏ nhất có thể để bạn có thể ghi nhớ nó và nhập nó vào một tệp tạm thời mỗi ngày.
Thử thách:
Nhiệm vụ của bạn là tạo một trình duyệt web được đánh gôn trong giao diện dòng lệnh. Nó nên:
- Lấy một URL trong thông qua args hoặc stdin
- Tách
directory
vàhost
các thành phần của URL - Gửi một yêu cầu HTTP đơn giản
host
đến yêu cầu đã nóidirectory
- In nội dung của bất kỳ thẻ
<p>
đoạn</p>
nào - Và thoát hoặc yêu cầu một trang khác
Thêm thông tin:
Một yêu cầu HTTP đơn giản trông như thế này:
GET {{path}} HTTP/1.1
Host: {{host}}
Connection: close
\n\n
Kết thúc dòng mới nhấn mạnh.
Một phản ứng điển hình trông giống như:
HTTP/1.1 200 OK\n
<some headers separated by newlines>
\n\n
<html>
....rest of page
Quy tắc:
- Nó chỉ cần hoạt động trên cổng 80 (không cần SSL)
- Bạn không thể sử dụng netcat
- Dù sử dụng ngôn ngữ lập trình nào, chỉ các API TCP cấp thấp mới được phép (ngoại trừ netcat)
- Bạn không thể sử dụng GUI, hãy nhớ, đó là CLI
- Bạn không được sử dụng các trình phân tích cú pháp HTML, ngoại trừ các trình phân tích dựng sẵn (BeautifulSoup không phải là một nội dung)
- Thêm!! Nếu chương trình của bạn lặp lại và yêu cầu một URL khác thay vì thoát, -40 ký tự (miễn là bạn không sử dụng đệ quy)
- Không có chương trình của bên thứ ba. Hãy nhớ rằng, bạn không thể cài đặt bất cứ điều gì.
- code-golf , vì vậy số byte ngắn nhất sẽ thắng
import webbrowser;webbrowser.open(url)