如何抓取confluence.org站点中PHP生成的图片形式的用户邮箱地址
问题核心
你当前的问题既不是图片处理环节的问题,也不是PHP资源逻辑错误,本质是没有正确获取到邮箱对应的图片二进制资源:直接从保存的本地网页中拿到的visitormailimg.php并不是真实的图片文件,只是对应服务端接口的路径标识。
可行实现方案
1. 构造完整的图片请求链接
你从HTML中拿到的src="visitormailimg.php?id=851"是相对路径,需要拼接站点根路径得到完整的请求URL,示例格式为https://confluence.org/visitormailimg.php?id=851,如果站点部署在子路径下自行调整前缀即可。
2. 正确请求获取图片资源
不要通过保存网页的方式获取资源,直接用网络请求库(Python下推荐requests)请求上述完整URL,需要携带和浏览器访问一致的请求头(User-Agent、登录态Cookie为必填,避免被站点反爬拦截),请求成功后返回的二进制内容就是邮箱图片本身,可直接存储为png/jpg格式的图片文件,参考代码片段:
import requests # 替换为你自己浏览器访问站点时的请求头 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Cookie": "你登录confluence.org后浏览器存储的Cookie内容" } img_id = 851 img_url = f"https://confluence.org/visitormailimg.php?id={img_id}" resp = requests.get(img_url, headers=HEADERS) # 保存为图片文件 with open(f"mail_{img_id}.png", "wb") as f: f.write(resp.content)
如果不想落地存储文件,也可以直接把resp.content传入图像处理库做后续识别,效率更高。
3. OCR提取邮箱文本
拿到正确的图片后再用tesseract识别即可,如果默认识别准确率低,可以先对图片做灰度转换、二值化、去噪等预处理操作,大幅提升文本识别正确率。
额外提醒
- 批量请求时注意控制访问频率,加随机间隔避免触发站点反爬规则被封IP
- 提前确认你的爬取行为、后续发送授权邮件的操作符合站点用户协议和对应地区的个人信息保护相关法规,避免合规风险
内容的提问来源于stack exchange,提问作者ragingbull
相关产品推荐
相关产品推荐

