背景
想定时通过http请求获取雪球上一些etf的分时数据(主要是有均价字段),如https://xueqiu.com/S/SH510310,见下图:
问题及解决方案
该接口需要登录
后才能访问。有如下几种实现方案:
- A. 调用登录接口
- A1. 使用 账号/密码 登录。忽略,因为要移动拼图,不能自动化
- A2. 调用 手机/验证码 登录。忽略,需要人工读取验证码,不能自动化
- B. 使用cookie
只能使用B方案,但是部署在云服务器中的应用是无法获取到cookie的,而cookie是保存在本地经常使用的谷歌浏览器中,那有没有办法获取到谷歌浏览器的cookie呢?
获取cookie
- C. 去谷歌浏览器的用户目录去找。我的谷歌浏览器版本是124.0.6367.119,在C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\Network中有Cookies文件(在网上查找的话,一般都是说在C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default目录中),当谷歌浏览器运行时不能打开本文件。
- D. 使用谷歌浏览器的扩展程序(插件)
由此,可以得到一个思路:使用本地谷歌浏览器访问雪球网站并登录,此时使用谷歌浏览器的扩展程序定时(如每5分钟)读取雪球网站的cookie并传给云服务器中的应用(它接收请求并将cookie保存起来),然后云服务器中的应用就可以使用cookie来调用对应接口了。
注意点
- background.js中不能访问页面DOM,也就不能使用jquery,要访问数据的话使用fetch()
- 调试代码时点击图中此处即可
附件
附件是编写的扩展程序代码,加载即可使用。
- 【附件-代码】 此代码折腾了4个小时,主要时间花在了调试chrome extendsion,和background.js中不能使用jquery。
- Hello World 扩展程序 | Extensions | Chrome for Developers
- facert/chrome-extension-guide: Chrome 扩展开发官方文档中文版翻译
- chrome-extensions-samples/functional-samples/tutorial.hello-world at main · GoogleChrome/chrome-extensions-samples