Peek-Boss [窥视Boss直聘]

偷偷查看Boss直聘;作用于公司上班环境,不适合查看boss的场景。修改了boss的图标以及标题。以及对色彩做了暗色处理,使它看起来不那么明显。

  1. // ==UserScript==
  2. // @name Peek-Boss [窥视Boss直聘]
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.3
  5. // @author maple
  6. // @license Apache License 2.0
  7. // @description 偷偷查看Boss直聘;作用于公司上班环境,不适合查看boss的场景。修改了boss的图标以及标题。以及对色彩做了暗色处理,使它看起来不那么明显。
  8. // @require https://unpkg.com/maple-lib@1.0.3/log.js
  9. // @match https://www.zhipin.com/*
  10. // @icon https://www.zhipin.com/favicon.ico
  11. // @grant GM_addStyle
  12. // ==/UserScript==
  13. 'use strict';
  14.  
  15. let logger = Logger.log("info")
  16.  
  17.  
  18. class MockBossConfig {
  19. constructor() {
  20. this.title = "debug"
  21. this.iconUrl = "https://www.baidu.com/favicon.ico";
  22. this.logoUrl = "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png";
  23. this.logoText = "百度一下";
  24. this.dark = true;
  25. }
  26.  
  27. getTitle() {
  28. return this.title;
  29. }
  30.  
  31. getIconUrl() {
  32. return this.iconUrl;
  33. }
  34. }
  35.  
  36. class PeekBoss {
  37. constructor() {
  38. this.mbc = new MockBossConfig()
  39. this.init();
  40. }
  41.  
  42. init() {
  43. this.pageBeautification();
  44. this.registerStyle();
  45. try {
  46. this.mockTitle();
  47. this.mockIcon();
  48. this.mockLogo();
  49. } catch (e) {
  50. logger.debug("初始替换报错", e)
  51. }
  52. this.continueMock();
  53. }
  54.  
  55. registerStyle() {
  56. // 页面logo替换 + pageHeader颜色修改
  57. GM_addStyle(`
  58. .logo a {
  59. display: block;
  60. background: url(${this.mbc.logoUrl}) 0 0 no-repeat;
  61. background-size: 113px 21px;
  62. }
  63.  
  64. #header {
  65. background:transparent;
  66. }
  67. `)
  68.  
  69. if (this.mbc.dark) {
  70. let bgColor = "#6b6b6b";
  71. /**
  72. * #main, #wrap 首页背景颜色
  73. * .home-body-wrapper .column-search-panel .btn-search 首页搜索按钮
  74. * .job-card-wrapper .job-card-right .company-tag-list li 公司标签
  75. * .job-card-wrapper .job-card-left .tag-list li 岗位标签
  76. * .city-area-select .area-select-wrapper 城市区域
  77. * .job-detail-section 详情页工作详情
  78. * condition-filter-select 条件筛选框
  79. * job-card-wrapper 每个工作选项卡
  80. * .job-card-wrapper .job-card-footer 工作选项卡底部
  81. * .job-card-wrapper .job-card-left .salary 薪资颜色
  82. * body html body
  83. * job-search-wrapper 顶部筛选选项卡
  84. * .job-card-wrapper .job-card-left .start-chat-btn 立即沟通按钮
  85. * job-search-box .job-search-form 搜索框
  86. * page-job-wrapper 整体背景色
  87. * .job-search-box .job-search-form .input-wrap .input 搜索框背景色
  88. * .job-search-box .job-search-form .city-label 地区背景色
  89. * .job-card-wrapper .job-card-right .company-logo img 图片黑白色
  90. * .job-card-wrapper .job-card-left .info-public 招聘人员名称职位
  91. */
  92. GM_addStyle(`
  93. #main, #wrap {background-color: ${bgColor};}
  94. .home-body-wrapper .column-search-panel .btn-search {background: transparent;}
  95. .home-body-wrapper .column-search-panel .search-form-con{border: 2px solid;}
  96. .job-body-wrapper .job-detail-section {background-color: ${bgColor};}
  97. .salary-calculate-entry {background: #333;}
  98. .job-body-wrapper .job-banner {background: #333;}
  99. .job-body-wrapper .detail-box .job-op .btn-container .btn-startchat {background-color: ${bgColor};}
  100. .job-body-wrapper .similar-job-wrapper {background: #333;}
  101. .job-card-wrapper .job-card-right .company-tag-list li{background: #3d3737;}
  102. .job-card-wrapper .job-card-left .tag-list li{background: #3d3737;}
  103. .job-body-wrapper .job-keyword-list li{background: #3d3737;}
  104. .job-body-wrapper .sider-company {background: #333;}
  105. .city-area-select .area-select-wrapper{background: transparent;}
  106. .condition-filter-select{background: transparent;}
  107. .condition-industry-select{background: transparent;}
  108. .condition-position-select.is-select .current-select{background: transparent;}
  109. .condition-filter-select.is-select .current-select{background: transparent;}
  110. .condition-position-select{background: transparent;}
  111. .job-card-wrapper {background-color: ${bgColor};}
  112. .job-card-wrapper .job-card-footer {background: #3d3737;}
  113. .job-card-wrapper .job-card-left .salary {color: #414a60;}
  114. .job-body-wrapper .similar-job-wrapper .similar-job-salary {color: #414a60;}
  115. .job-body-wrapper .job-banner .salary {color: #414a60;}
  116. body{background-color: ${bgColor};}
  117. .job-search-wrapper{background-color: ${bgColor};}
  118. .job-card-wrapper .job-card-left .start-chat-btn {background:none;}
  119. .job-search-box .job-search-form{width: 100%;background:none;border: 2px solid;}
  120. .page-job-wrapper {background-color: #999;}
  121. .job-search-box .job-search-form .input-wrap .input{background-color: ${bgColor};}
  122. .job-search-box .job-search-form .city-label{background-color: ${bgColor};}
  123. img {filter: grayscale(1);}
  124. .job-card-wrapper .job-card-left .info-public {background: #3d3737;}
  125. .page-sign {background: ${bgColor}}
  126. .sms-form-wrapper .sms-form-btn .sure-btn {background: ${bgColor}}
  127. .job-body-wrapper .smallbanner {background: #333;}
  128. .job-body-wrapper .smallbanner .name .badge {color: #414a60;}
  129. .job-body-wrapper .smallbanner .detail-op .btn-startchat {background: ${bgColor}}
  130. .job-body-wrapper .job-sider .sign-form {background: ${bgColor}}
  131. .job-body-wrapper .job-sider .form-btn .btn {background: ${bgColor}}
  132. `)
  133. }
  134. }
  135.  
  136. pageBeautification() {
  137. // 首页背景图片
  138. DOMApi.delElement(".fast-register-box", true)
  139. // 详情页工资计算器
  140. DOMApi.delElement(".salary-calculate-entry", true)
  141. // 侧栏
  142. DOMApi.delElement(".job-side-wrapper")
  143. // 侧边悬浮框
  144. DOMApi.delElement(".side-bar-box")
  145. // 新职位发布时通知我
  146. DOMApi.delElement(".subscribe-weixin-wrapper", true)
  147. // 搜索栏登录(不可用)框
  148. DOMApi.delElement(".go-login-btn")
  149. // 搜索栏去APP
  150. DOMApi.delElement(".job-search-scan", true)
  151. // 顶部面板
  152. // DOMApi.setElement(".job-search-wrapper",{width:"90%"})
  153. // DOMApi.setElement(".page-job-content",{width:"90%"})
  154. // DOMApi.setElement(".job-list-wrapper",{width:"100%"})
  155. GM_addStyle(`
  156. .job-search-wrapper,.page-job-content{width: 90% !important}
  157. .job-list-wrapper,.job-card-wrapper,.job-search-wrapper.fix-top{width: 100% !important}
  158. .job-card-wrapper .job-card-body{display: flex;justify-content: space-between;}
  159. .job-card-wrapper .job-card-left{width: 50% !important}
  160. .job-card-wrapper .start-chat-btn,.job-card-wrapper:hover .info-public{display: initial !important}
  161. .job-card-wrapper .job-card-footer{min-height: 48px;display: flex;justify-content: space-between}
  162. .job-card-wrapper .clearfix:after{content: none}
  163. .job-card-wrapper .job-card-footer .info-desc{width: auto !important}
  164. .job-card-wrapper .job-card-footer .tag-list{width: auto !important;margin-right:10px}
  165. .city-area-select.pick-up .city-area-dropdown{width: 80vw;min-width: 1030px;}
  166. .job-search-box .job-search-form{width: 100%;}
  167. .job-search-box .job-search-form .city-label{width: 10%;}
  168. .job-search-box .job-search-form .search-input-box{width: 82%;}
  169. .job-search-box .job-search-form .search-btn{width: 8%;}
  170. .job-search-wrapper.fix-top .job-search-box, .job-search-wrapper.fix-top .search-condition-wrapper{width: 90%;min-width:990px;}
  171. `)
  172. logger.debug("初始化【页面美化】成功")
  173. }
  174.  
  175. continueMock() {
  176. setInterval(() => {
  177. this.mockTitle();
  178. this.mockIcon();
  179. this.mockLogo();
  180. }, 2000)
  181. }
  182.  
  183. mockTitle() {
  184. document.title = this.mbc.getTitle();
  185. }
  186.  
  187. mockIcon() {
  188. let listPageIcon = document.head.querySelector('[rel="shortcut icon"]');
  189. if (listPageIcon && listPageIcon.href !== this.mbc.getIconUrl()) {
  190. listPageIcon.href = this.mbc.getIconUrl();
  191. }
  192.  
  193. // 获取<head>元素
  194. let head = document.head || document.getElementsByTagName('head')[0];
  195. let oldLink = head.querySelector('link[rel="icon"]');
  196. if (head && oldLink && oldLink.href === this.mbc.getIconUrl()) {
  197. return;
  198. }
  199.  
  200. // 创建一个新的<link>元素
  201. let link = document.createElement('link');
  202. link.type = 'image/x-icon';
  203. link.rel = 'icon';
  204. link.href = this.mbc.getIconUrl();
  205.  
  206. // 检查是否已经有favicon元素,如果有,就替换它
  207. if (oldLink) {
  208. oldLink.parentNode.removeChild(oldLink);
  209. }
  210.  
  211. // 将新的<link>元素添加到<head>中
  212. head.appendChild(link);
  213. }
  214.  
  215. mockLogo() {
  216. let logoDivTag = document.querySelector(".logo");
  217. if (!logoDivTag) {
  218. return;
  219. }
  220. let logoATag = logoDivTag.querySelector("a");
  221. logoATag.title = this.mbc.logoText;
  222. }
  223.  
  224.  
  225. }
  226.  
  227. class DOMApi {
  228. static delElement(name, loop = false, el = document) {
  229. let count = 0;
  230. let t = setInterval(() => {
  231. const element = el.querySelector(name)
  232. if (!element) {
  233. if (!loop) {
  234. clearInterval(t)
  235. }
  236. if (count++ > 5) {
  237. clearInterval(t)
  238. }
  239. return
  240. }
  241. element.remove()
  242. clearInterval(t)
  243. }, 200)
  244. }
  245. }
  246.  
  247.  
  248. (function () {
  249. window.addEventListener("load", () => {
  250. new PeekBoss();
  251. })
  252. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址