[問題] requests的cookie問題

作者: museangel (museangel)   2021-02-11 17:57:14
第一位成功幫忙解決問題,讓我之後可重複成功登入A網站及B網站,而不用手動先登入取cookie者,以新台幣2000元作為感謝,因是內網網站,且無法使用遠端桌面,可能得視訊指導…
之前有用selenium成功爬了,requests卻怎麼都搞不定,始終卡在登入階段…
○目的:
我想用帳密登入A網站,透過A網站的連結,登入我不知道帳密的B網站。
○程式碼:
我把程式碼放在github:https://reurl.cc/2b879r
○問題點1:
發生在登入A網站時,
所有header,除了會變動的,其他完全複製貼上F12裡面的內容,
我看F12中Request URL: LoginPage的Request Headers裡cookie: JSESSIONID=亂碼甲
但我用程式碼跑時,
headers裡cookie要只放requests取得的亂碼乙或手動用瀏覽器登入取得的亂碼甲才能成
功登入進A站,
而不能cookie放requests取得的JSESSIONID=亂碼乙,或手動用瀏覽器登入取得的
JSESSIONID=亂碼甲,
為什麼不放JSESSIONID=才能成功呢?
○問題點2:
發生在登入A網站成功後,透過A網站給的連結登入我不知道帳密的B網站,
這時F12中Request URL: 登入成功後的網址的Request Headers裡同樣cookie:
JSESSIONID=亂碼甲
跟前面問題點1的cookie是完全一樣的。
可是這邊我用程式碼跑,
headers裡無論放requests取得的亂碼乙或requests取得的JSESSIONID=亂碼乙都失敗,
無法成功get到資料。
如果我直接把用瀏覽器登入成功的JSESSIONID=亂碼甲放到程式碼中headers裡,
就能成功get到之後要post需要的資料。
若只放瀏覽器登入成功的亂碼甲同樣會失敗。
○總結:
我不懂為什麼問題點1跟問題點2中Request Headers裡同樣都是cookie: JSESSIONID=亂碼
甲,
第1個是要只輸入requests取得的亂碼乙,或瀏覽器取得的亂碼甲,
第2個是只能用瀏覽器取得的JSESSIONID=亂碼甲呢?
F12 Request Headers裡cookie都一樣的啊...
○狀況簡易分析:
requests取得的:亂碼乙、JSESSIONID=亂碼乙
瀏覽器取得的:亂碼甲、JSESSIONID=亂碼甲
問題點1可成功的:亂碼乙、亂碼甲
問題點2可成功的:JSESSIONID=亂碼甲
作者: TakiDog (多奇狗)   2021-02-11 21:24:00
先試著不同domain不同requests.session ?再去迴圈把A session 的cookie 利用 session.cookies.set去倒入B session不太建議在requests上用header去操作cookie (session其實他操作不到)requests其實是有處理set-cookie domain/httpOnly...那類資料的requests處理很多東西,除非你能清楚地看到中間傳送的封包差異建議用Chalres 或是掛其他Proxy web debuger去查看封包我應該回文才對= =
作者: s860134 (s860134)   2021-02-12 12:52:00
從 A 登入 B? 這邊交換登入資料的地方不見得是 cookie,也可能放在url parameter 或 post

Links booklink

Contact Us: admin [ a t ] ucptt.com