Vì vậy, tôi đã trả lời câu hỏi này trước here. Tuy nhiên, một cái gì đó trên trang web Flurry đã thay đổi và câu trả lời không còn hoạt động nữa.Yêu cầu đăng nhập Flurry.Session() Python 3
from bs4 import BeautifulSoup
import requests
loginurl = "https://dev.flurry.com/secure/loginAction.do"
csvurl = "https://dev.flurry.com/eventdata/.../..." #URL to get CSV
data = {'loginEmail': 'user', 'loginPassword': 'pass'}
with requests.Session() as session:
session.headers.update({
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"})
soup = BeautifulSoup(session.get(loginurl).content)
name = soup.select_one("input[name=struts.token.name]")["value"]
data["struts.token.name"] = name
data[name] = soup.select_one("input[name={}]".format(name))["value"]
login = session.post(loginurl, data=data)
getcsv = session.get(csvurl)
Đoạn mã trên đã hoạt động tốt trong tháng trước và sau đó nó ngừng hoạt động vào tuần trước. Đối với cuộc sống của tôi, tôi không thể tìm ra những gì trên trang web đã thay đổi. ID Tên và mã thông báo tất cả có vẻ chính xác, tên người dùng và pass không thay đổi. Im thua lỗ.
Nếu tôi đăng nhập theo cách thủ công, tôi có thể tải xuống csv chỉ bằng cách sử dụng csvurl
.
login.histroy
show:
[<Response [302]>, <Response [302]>, <Response [302]>, <Response [302]>, <Response [303]>]
Nếu bất cứ ai có thể xem xét và tìm ra nơi tôi đang đi sai, tôi sẽ đánh giá rất cao nó.
Cảm ơn.
CẬP NHẬT
Vì vậy, từ địa chỉ đăng nhập mới, tôi thấy bài viết cần phải được định dạng này:
{"data":{"type":"session","id":"bd7d8dc1-4a86-4aed-a618-0b2765b03fb7","attributes":{"scopes":"","email":"myemail","password":"mypass","remember":"false"}}}
Những gì tôi không thể tìm ra dù là làm thế nào họ đã tạo ra id . Có ai có thể xem không?
ID này trông giống như mã thông báo phiên. Mã thông thường là dữ liệu được mã hóa ngẫu nhiên hoặc phía máy chủ để tự động xác thực người dùng đã đăng nhập và ngăn chặn [session hijacking] (https: // www .owasp.org/index.php/Session_hijacking_attack). Thông qua python, có thể bạn sẽ cần đăng nhập vào dịch vụ web, nhận ID phiên/Mã thông báo yêu cầu dữ liệu bạn muốn xóa. –