请教使用 Python 爬虫获取 Cookie 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
mathor
V2EX    Python

请教使用 Python 爬虫获取 Cookie 的问题

  •  1
     
  •   mathor 2023-10-22 21:47:09 +08:00 2020 次点击
    这是一个创建于 789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个登录页面,网址是 http://aaaaa.com/login.jsp ,打开 f12 看到 Network 里 Cookie 当中有这么一个参数“JSESSIONID”,无论我如何刷新页面( F5 或者是 ctrl+F5 ),这个 JSESSIONID 都不会变。我输入用户名密码进行登录以后(没有验证码,只需要输入用户名密码,点击登录按钮),进入主页再看 Network ,这个 Cookie 里 JSESSIONID 的值还是没变过。

    问题来了,我用 python
    ```python
    session = requests.session()
    params = {'username': xxx, 'password': xxx}
    response1 = session.get(login_url, data=params)
    response2 = session.get(login_url, data=params)
    ```
    然后我分别打印了`response1`和`response2`的 cookie 看了一下里面的 JSESSIONID 的值,居然完全不一样,难道不应该同一个会话的 JSESSIONID 是一样的吗?

    另外还有一个问题就是,我获取 cookie ,然后传给下面的代码
    ```python
    headers = {'cookie': cookie, 'User-Agent': xxxxx, 'Host': xxxx,.....}
    respOnse= session.post(url, headers=headers)
    print(response.text)
    ```
    如果登录成功,这个 cookie 值是有效的,那么需要登录能访问的 url ,response.text 打印出来应该是网页的内容,可是并不是,打印的结果一看就是没登录成功,很费解

    ps: 环境所限,不太能使用 seleinum 这样的自动化库,只能使用爬虫。请各位大佬帮忙参谋参谋是哪儿出了问题,感谢
    9 条回复    2023-10-26 18:00:35 +08:00
    yumusb
        1
    yumusb  
       2023-10-22 21:52:45 +08:00
    建议发具体的看看
    mathor
        2
    mathor  
    OP
       2023-10-22 21:59:25 +08:00
    @yumusb sorry ,我现在不在办公室,这个网站是公司内网,因此没法发截图之类更详细的内容
    julyclyde
        3
    julyclyde  
       2023-10-22 22:12:21 +08:00
    你用浏览器对比的是:登录前、登录后
    你用 requests 对比的是:第一次登录后、第一次还没退出就执行第二次登录后
    这俩事件并不一样啊,你为什么会期望他们的 JSESSIONID 相同呢?

    第二个问题,建议你打一下 status 看看。也许是个跳转?
    jeeyong
        4
    jeeyong  
       2023-10-23 10:29:39 +08:00
    1. 先访问页面, res = requests.get...
    2. cookies = res.cookies
    3. requests.get(cookies=cookies)

    这么试试呢?
    julyclyde
        5
    julyclyde  
       2023-10-23 12:04:11 +08:00
    @jeeyong 他已经用了 session 了
    1018ji
        6
    1018ji  
       2023-10-23 15:53:20 +08:00
    JSESSIONID 就是登录生成的呗,先拿浏览器登录的 cookie 测试 2 看成功吗
    DOGSO
        7
    DOGSO  
       2023-10-23 20:26:38 +08:00
    有没有一种可能,这个 JSESSIONID 与你发起的 session 是无关的,只和 login 相关,是无状态的
    fbichijing
        8
    fbichijing  
       2023-10-24 22:54:45 +08:00
    难道不是应该先抓下包吗?
    Maerd
        9
    Maerd  
       2023-10-26 18:00:35 +08:00
    requests 的 session ,作用是帮你维护一个连接池,请求同一个域的时候会复用 tcp 连接,此外就是会保留设置好的 headers 和 cookie 。http 协议是由请求和响应组成的,而 response 的 cookie ,是你接收到的 http 响应的 headers 的 set-cookie 字段,既然你登陆了两次,这个又怎么会返回一样的值呢?这个和语言无关,题主可以进一步熟悉一下 http 协议
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1294 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:07 PVG 01:07 LAX 09:07 JFK 12:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86