Tôi gặp sự cố với ủy quyền đơn giản và tải lên tập lệnh API.Yêu cầu của python không xử lý đúng cookie?
Khi được ủy quyền, ứng dụng khách sẽ nhận được một số cookie, bao gồm cookie PHPSESSID (trong trình duyệt).
tôi sử dụng phương pháp requests.post
với dữ liệu mẫu cho phép:
r = requests.post(url, headers = self.headers, data = formData)
self.cookies = requests.utils.dict_from_cookieja(r.cookies)
Headers được sử dụng để tùy chỉnh User-Agent
chỉ.
Ủy quyền là 100% tiền phạt (có liên kết đăng xuất trên trang). Sau đó, tôi cố gắng để tải lên dữ liệu bằng cách sử dụng các tập tin cookie phiên ủy quyền:
r = requests.post(url, files = files, data = formData, headers = self.headers, cookies = self.cookies)
Nhưng trang web từ chối yêu cầu. Nếu chúng ta so sánh các yêu cầu từ tập lệnh và google chrome (sử dụng Wireshark), thì không có sự khác biệt trong phần thân yêu cầu.
Chỉ khác biệt là cookie được gửi theo lớp yêu cầu, trong khi google chrome gửi .
Cập nhật: Đã chọn đôi, yêu cầu đầu tiên nhận được 7 cookie. phương pháp đăng chỉ cần bỏ qua một nửa ...
Tôi không biết bất kỳ vấn đề về cookie nào với 'yêu cầu', không. Sử dụng tab Ẩn danh của Chrome, có bao nhiêu cookie được đặt * theo yêu cầu đầu tiên đến trang web *? Trang web có thể thay đổi rất tốt hành vi dựa trên tác nhân người dùng hoặc các tiêu đề yêu cầu khác. Tiếp theo, bạn có chắc chắn trang không sử dụng mã thông báo CSRF được nhúng với biểu mẫu đăng nhập không? –
Tiếp theo, ngày hết hạn trên cookie là gì? Có các cờ cụ thể được đặt trên các cookie đó không? Điều gì sẽ xảy ra khi bạn sử dụng một đối tượng 'requests.Session()' để quản lý các cookie? –
@MartijnPieters bad của tôi, tôi đã giải quyết được những sai lầm. Tôi không có thời gian sử dụng lớp 'session', lời khuyên tốt cho tương lai! – Croll