本文首发在我的个人博客:https://jlice.top/p/7kmxm/。欢迎大家前去参观,么么哒~

前一段时间发现扇贝网页版显示的打卡日记和手机上看到的不一致,感觉应该是网页版开发滞后的原因。这种不一致给查卡带来了诸多不便,于是就设法解决该问题。

起初我想到的方案是做一个静态页面放到对象存储上,然后对象存储开启静态服务,静态页面通过Ajax请求手机版的RESTful接口获取数据,然后生成打卡日记。不过,通过反复试验发现这种方法行不通。

$.get(url, function(data){// do something
});

直接使用Ajax请求会报错:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是因为服务器不允许跨站。

然后接触到了用JSONP来进行跨站请求。因为js脚本可以跨站,像静态博客的评论功能就是用的跨站js脚本,JSONP的思路是在请求的地址上携带一个callback参数,服务端以这个callback参数作为函数名包裹JSON数据,然后在返回数据时调用这个函数,就把JSON数据传过来了。

$.ajax({url: url,dataType: 'jsonp',success: function(json){// do something}
});

但是,使用JSONP的前提同样是需要服务器端的配合。假如服务器端不适配JSONP,也就是不返回包裹JSON数据的函数,而是依旧返回JSON,那么JSON数据就会被视为javascript脚本运行,会报错:

Uncaught SyntaxError: Unexpected token :

然后想到iframe也可以跨站,于是试试iframe,结果发现依然是想多了:

Refused to display '***' in a frame because it set 'X-Frame-Options' to 'deny'.

也就是iframe也是需要服务器端配合。假如服务器端不允许iframe,那么iframe便不能跨站。

跨站请求其实也比较危险,例如XSS、CSRF。于是,我决定不通过跨站请求,而是利用油猴脚本来实现我的需求,顺便补充了点jQuery。

// ==UserScript==
// @name         显示真实打卡日记
// @namespace    https://www.shanbay.com/
// @version      0.1
// @description  显示时区、真实打卡日记、打卡时间
// @author       文剑木然
// @match        https://www.shanbay.com/checkin/user/*
// @grant        MIT
// @require      https://static.baydn.com/static/scripts/jquery-1.7.2.min.js
// ==/UserScript==$(function(){var url = window.location.href.replace('www.shanbay.com', 'www.shanbay.com/api/v1').replace('?page', '?ipp=10&page');$.get(url, function(json){// 显示时区var timezone = json.data[0].user.timezone;if(json.data.length > 0 && timezone !== 'Asia/Shanghai'){$('h2').html($('h2').html() + '(' + timezone +')');}// 修改打卡日记for(var i=0; i<10; i++){var idata = json.data[i];var icheckin = $('#checkin').children().eq(i);var number = icheckin.find('span.number');number.html(' ' + idata.num_checkin_days);var note = icheckin.find('div.note');if(json.data[i].note_length === 0){note.html(idata.info);}else{note.html(idata.info + ' , ' + idata.note);}var date = icheckin.find('div.span4');date.html('<strong>' + idata.checkin_date +'</strong>&nbsp;&nbsp;&nbsp;&nbsp;(' +idata.checkin_time.replace('T', '&nbsp;&nbsp;') + ')');}});
});

jQuery中,children()指直接子元素,.find()能递归查找子元素,.eq(i)为第i个元素。用jQuery来修改DOM还是十分简便的。

利用油猴脚本显示扇贝网真实打卡日记相关推荐

  1. 日常使用——利用油猴脚本将数据所需要的数据输出的控制台

    最近由于碰到需要从网页上扒下来不少数据表的内容,由于网站上有了相应的数据保护,无法直接从网页上复制,通过F12调出查看网页上的表格结构,发现数据卸载 titile属性里面,又设置的是只读. 因此想到利 ...

  2. 如何利用油猴脚本(tampermonkey)免费使用知网维普?

    1. 首先在浏览器里找到"扩展程序" 谷歌浏览器:自定义及控制chrome--更多工具--扩展程序 Edge浏览器:设置及其他--扩展 ps:自定义及控制chrome}  设置及其 ...

  3. 手把手教学:使用油猴脚本对CCTV央视网启用HTML5播放器

    Flash Player明天就会阻止加载Flash内容.但是CCTV也仅仅是把新出的视频启用了H5播放器,之前的视频仍然需要Flash插件才能播放.很多人说装一个油猴脚本,可是问题是,不是所有人都玩得 ...

  4. 扇贝python离线_Python项目:扇贝网小组查卡助手

    扇贝网是一个非常棒的英语学习网站,大家还可以加入一些小组,一起交流学习.共同进步.但是,小组管理起来非常辛苦,尤其是在0点前踢出不打卡的成员,因此考虑利用程序来实现小组查卡自动化. 登录 操作 扇贝网 ...

  5. 一日一技 | 利用油猴插件自定义网页显示字体

    浏览器打开网页的字体,可以通过安装油猴插件的方式实现自定义,带来统一的阅读体验. 引言 效果图示例如下. 效果图 上图左侧,用 Safari 打开百度百科词条页面,默认显示的网页字体是 macOS 中 ...

  6. 利用油猴插件 Tampermonkey 编写脚本以屏蔽网页指定元素——以屏蔽百度搜索右边的百度热榜为例

    一.起因 一直使用 Tampermonkey 中的 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 这个插件屏蔽好好的,今天突然屏蔽不了,正好自己编写一个简单的插件试试完成这一 ...

  7. 利用油猴插件实现百度云满速下载

    提示:这里建议搭配IDM进行下载!!!可以先去了解一下IDM. 下载油猴插件http://tampermonkey.net/ 下载js脚本 点我跳转 将网页内容全部复制,保存到文本文档中 安装油猴插件 ...

  8. 使用油猴脚本看视频的过程

    1.先在Chrome安装好油猴扩展程序 2.打开https://greasyfork.org/zh-CN 3.搜索[视频] 4.点击[懒人专用] 5.安装脚本 6.打开油猴管理面板,看到脚本已启用

  9. 【油猴脚本】改变网页代码块的字体样式/美化LeetCode代码文字显示(CSS;设置@font-face和font-family)

    美化网页的代码字体 脚本安装地址: 参考:改变网页代码块的字体样式 更新日志 V0.1 更新时间:2021年9月20日23:04:41 更新功能: 1.改变LeetCode.CSDN.博客园嵌入的代码 ...

最新文章

  1. Python Web 框架要点
  2. 外卖小哥转行IT面完阿里后,又回去送外卖了,真实经历!
  3. vue java 插件开发_实习模块vue+java小型全栈开发(三)
  4. 企鹅科技获蚂蚁金服亿元战略投资,利用智慧物联赋能商用洗衣设备
  5. 我们眼中的2015年互联网10大产品事件
  6. 漫画:什么是计数排序
  7. docker部署php站点,docker部署php
  8. pip工具使用总结以及常用库PIL、freetype的安装
  9. 【C语言】第六章 集合数据与数组 题解
  10. 思科Catalyst1900交换机上速配VLAN
  11. html5音乐播放时间监测,【HTML5】HTML5中video元素事件详解(实时监测当前播放时间)...
  12. 卧槽!新来的妹纸rm -rf把公司整个数据库删没了,整个项目组慌了~
  13. openwrt lede_在openwrt lede接入点上的免费动态dns服务提供商配置
  14. 微星主板前面板耳机插孔无声音输出问题【已解决】
  15. python将excel转换成图片_python-尝试将Excel文件保存为图片并加上水印-阿里云开发者社区...
  16. 如何修改Windows10系统文本背景色
  17. 点选式验证码?使用深度学习搞定它
  18. 计算机硬件查看,电脑硬件配置怎么查看和测试
  19. 人脸检测研究最新进展
  20. 今天来个好玩儿的 “ 反射 ”

热门文章

  1. 零中频接收机频率转换图_相干光接收机的相关问题
  2. linux 复制 u盘 只读,Linux_ubuntu系统下向U盘拷贝数据提示目标是只读的,在ubuntu11.04下使用U盘的时候, - phpStudy...
  3. 为什么要使用微信活码?
  4. nodejs app.js详解
  5. uniapp实现小程序预览、保存、转发pdf/word/excel等文件
  6. Spring boot视频播放(解决MP4大文件无法播放),整合ffmpeg,用m3u8切片播放。
  7. 1273:【例9.17】货币系统
  8. AHRS和IMU的联系和区别
  9. AHRS简要说明及使用例程(外加踩坑)
  10. python抢红包程序算法,Python 抢红包算法模拟