我環顧四周并嘗試了很多不同的東西,但似乎無法找到有關此主題的任何資訊。
我正在嘗試從我的銀行 (Discover) 中獲取資訊,并為此撰寫了一個腳本。它回傳一切正常,但回傳一個“注銷”頁面,而不是我的余額所需的主頁。
我的亂碼如下:
import requests
from bs4 import BeautifulSoup as bs
def scrapeDiscover():
URL = 'https://portal.discover.com/customersvcs/universalLogin/signin'
request_URL = 'https://portal.discover.com/customersvcs/universalLogin/signin'
HEADERS = {'User-Agent':'User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; en-US) WindowsPowerShell/4.0', 'Origin':'https://portal.discover.com', 'Referer':'https://portal.discover.com/customersvcs/universalLogin/ac_main'}
s = requests.session()
PAYLOAD = {
'userID' : 'username',
'password' : 'password',
'choose-card' : 'Credit Card',
'pm_fp' : 'version=-1&pm_fpua=mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/95.0.4638.69 safari/537.36|5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36|Linux x86_64&pm_fpsc=24|1920|1080|1053&pm_fpsw=&pm_fptz=-6&pm_fpln=lang=en-US|syslang=|userlang=&pm_fpjv=0&pm_fpco=1',
'currentFormId' : 'login',
'userTypeCode' : 'C',
'rememberOption' : 'on',
}
login_req = s.post(URL, headers=HEADERS, data=PAYLOAD)
cookies = login_req.cookies
soup = bs(s.get('https://card.discover.com/cardmembersvcs/achome/homepage').text, 'html.parser')
balance = soup.text
print(balance)
scrapeDiscover()
我還查看了所需的發布請求資訊,并將其放在這里:

任何幫助或建議都會非常感謝!即使只是一個建議也會有很大幫助。非常感謝大家!如果需要更多資訊,請告訴我。
編輯:添加了資訊,我想在 post 請求中可能缺少一些 cookie 或令牌,但我已經多次查看代碼并找到任何在實作時有效的東西,或者,即使我正確地實作了它。
有幾件事讓我印象深刻:
SSID:在有效的發布請求的“表單資料”中,有一個帶有長字串的“ssid”表單。然而,這每次都會改變,我想象它代表“會話 ID”,我不需要它,因為我的代碼正在創建一個新的會話。
ssid: 0433c923-6f48-4832-8d6d-b26c5b0e6d4-1637097180562
STRONGAUTHSVS:我發現的另一件事是這個“STRONGAUTHSVS”變數(嵌套在長串 cookie 中,在請求和收到的標頭中)
STRONGAUTHSVCS=SASID=null&SATID=b081-
sectoken:最后,我看到了作業令牌,我認為這可能就是它。cookie 中以“sectoken”為變數名的變數。不知道它是什么,或者我會如何暗示它。
sectoken=hJNQgh7EOnH1xx1skqQqftbV/kE=
有了所有這些,我已盡最大努力將它們嵌入代碼的標題中,但似乎對輸出沒有影響。我附上了站點 cookie 的粘貼箱和捕獲的表單資料(減去任何敏感資料)。如果有人有任何想法,我將不勝感激! https://pastebin.com/PNnV6Mpw
uj5u.com熱心網友回復:
讀這個。我認為,出于安全原因,您的 POST 請求可能需要一個令牌。如果只是刮擦很重要,請嘗試使用硒。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("https://portal.discover.com/customersvcs/universalLogin/signin")
driver.maximize_window()
log_in = (
WebDriverWait(driver, 5)
.until(
EC.element_to_be_clickable(
(By.XPATH, "/html/body/div[1]/header/div[1]/div[2]/div[2]/ul/li[3]/a")
)
)
.click()
)
driver.find_element_by_xpath("//*[@id='userid']").send_keys("your_user_id")
driver.find_element_by_xpath("//*[@id='password']").send_keys("your_password")
driver.find_element_by_xpath("//*[@id='log-in-button']").click()
使用左側面板登錄時出現錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361668.html
