You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+BeautifulSoup提取<script>中jsessionid实现Webmail重定向

解决Mechanize登录Webmail后提取JS重定向中的JSESSIONID问题

看来你在用mechanize写Python脚本提取Webmail信息时,卡在了登录后的JS重定向环节——返回的页面只有一段跳转脚本,正则提取JSESSIONID还没成功,别着急,我来给你捋捋解决方案!

问题分析

你拿到的返回内容是一段JavaScript重定向代码,其中的jsessionid藏在window.self.location.replace的目标URL里。之前正则没成功,大概率是表达式没有覆盖JSESSIONID的所有字符规则(比如它包含大写字母、数字和点号),或者分组方式不对。

解决方案:两种提取方式任选

方式1:直接提取完整的重定向URL

这种方法更稳妥,不用手动拼接参数,直接把JS里的目标URL完整提取出来:

import mechanize
import re
import cookielib

cj = cookielib.LWPCookieJar()
br1 = mechanize.Browser()
br1.set_handle_robots(False)
br1.set_cookiejar(cj)
br1.open("LOGIN URL")
br1.select_form(nr=0)
br1.form['username'] = mail_site
br1.form['password'] = pw_site
res1 = br1.submit()
html = res1.read().decode('utf-8')  # 解码为字符串,避免字节串匹配问题

# 提取完整的重定向URL
url_pattern = r"window.self.location.replace\('(.*?)'\)"
url_match = re.search(url_pattern, html)
if url_match:
    full_redirect_url = url_match.group(1)
    print(f"提取到的重定向URL: {full_redirect_url}")
    # 用mechanize打开这个URL,继续后续流程
    res2 = br1.open(full_redirect_url)
    # 处理目标页面内容
    target_html = res2.read().decode('utf-8')
    print(target_html)
else:
    print("未能找到重定向URL")

方式2:单独提取JSESSIONID再拼接URL

如果你只需要JSESSIONID,或者想自己构造URL,可以用这个方法:

# 接前面的登录代码...
html = res1.read().decode('utf-8')

# 提取JSESSIONID
jsessionid_pattern = r'jsessionid=([A-Z0-9.]+)'
jsessionid_match = re.search(jsessionid_pattern, html, re.IGNORECASE)
if jsessionid_match:
    jsessionid = jsessionid_match.group(1)
    print(f"提取到的JSESSIONID: {jsessionid}")
    # 构造重定向URL
    redirect_url = f'/webmail/en_EN/continue.html;jsessionid={jsessionid}?MESSAGE=NO_COOKIE&DT=1&URL_VALID=welcome.html'
    res2 = br1.open(redirect_url)
    # 处理后续内容
else:
    print("未能提取到JSESSIONID")

关键注意点

  • 解码字节串:res1.read()返回的是字节串,记得用decode('utf-8')转成字符串,否则正则匹配可能失效。
  • 正则匹配规则:JSESSIONID通常由大写字母、数字和点号组成,所以正则里用[A-Z0-9.]+,加上re.IGNORECASE可以兼容小写的情况(如果有的话)。
  • Mechanize的JS限制:Mechanize本身不支持执行JavaScript,所以这种JS重定向必须手动处理,没法让它自动跳转。

内容的提问来源于stack exchange,提问作者a.lejeune626

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:57:14