有一个 web 页面,需要一系列登陆验证。如何实时刷新并获取最新的数据?

68 天前
 xinmans

我从浏览器打开,登陆之后,可以保持 session 10 来天,然后页面会自动定时刷新

现在有没有办法开着浏览器来定时获取页面的数据?

通过 python 调用 webdriver 没办法搞定登陆问题,所以希望是浏览器插件这种方式? 猴油脚本有可能么?

需要支持把获取的数据定期发送出来,或者写到数据库( mysql 等)

1486 次点击
所在节点    Web Dev
11 条回复
shadowyue
68 天前
你这提供信息这么少🤣 算命是吧
我来帮你掐指一算,你说的自动刷新,大概率是你登录过期了,请求接口的时候触发了前端登录过期的判断,让你跳转到登录页面了。
你想绕过登录过期这个逻辑不太可能,这都是服务端的判断了。
还是想办法能做到自动登录,可能性高一点
xinmans
68 天前
@shadowyue 是个论坛的某个板块,有很多帖子。

自动刷新是指有新的帖子进来,会自动展示。而不需要重新登陆,有 session 会话保持。
sentinelK
68 天前
没太看懂楼主的需求,楼主的意思是想爬一个网页的数据?
无头浏览器是否契合楼主的需求?
Vegetable
68 天前
所以你想做的是

1. 手动打开浏览器,访问目标网站,登录,进入数据页面挂机
2. 页面自己获取最新数据时,某个程序将这个数据保存下来

方案有很多,webdriver 是可以的,只要你嵌入一个手动登录过程就行。
浏览器插件和脚本都可以,不过需要对应的外部程序配合接收数据
其他方案:

代理方案,使用 mitmproxy 代理特定网络,浏览器挂代理之后,逻辑写在代理里 https://github.com/mitmproxy/mitmproxy/issues/1487
xinmans
68 天前
@Vegetable webdriver 无头浏览器搞过不需要登录的,比如爬一些开源论坛。但是需要登录的没有搞过,有没有 sample 代码可以参考下?感觉这个方案最成熟。
Ausmo
68 天前
搜一下 puppeteer 或者 playwright
Vegetable
68 天前
@xinmans 你只需要将无头浏览器换成有头的,比如 chrome 。
到了登录页面你先登录一下。登录完了脚本继续工作就行。

你可能没意识到 selenium 是控制浏览器的,不是专门控制无头浏览器的,只是很多场景不需要头而已。

随便搜索的例子: https://www.cnblogs.com/c2soft/articles/13019429.html
xinmans
68 天前
@Vegetable 懂了,那需要在带图形界面的环境里弄了,我之前主要在命令行下跑无头。我在 windows 下搞一套即可。
slowhand
68 天前
试试浏览器插件:automa
imicksoft
68 天前
用 aardio 的话,使用用 web.view2 库开发内置浏览器组件的程序,像以前调用 webbrowser 一样,
然后定时执行 js 获取数据,保存到本地或插入 Mysql 数据库
xinmans
68 天前
用有头 webdrvier 搞定了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1082802

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX