[问题] 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