知乎圈子点赞工具2

自动点击红心

  1. // ==UserScript==
  2. // @name 知乎圈子点赞工具2
  3. // @name:en zhihu-like
  4. // @namespace http://sunzehui.github.io/
  5. // @version 0.3
  6. // @description 自动点击红心
  7. // @description:en auto like-btn click
  8. // @author sunzehui
  9. // @match *://*.zhihu.com/club/*
  10. // @run-at document-idle
  11. // ==/UserScript==
  12. async function sleep(time){
  13. return await new Promise(resolve=>{
  14. setTimeout(resolve,time)
  15. })
  16. }
  17. function hasClass(element, cls) {
  18. return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
  19. }
  20. //自动签到
  21. sleep(2000).then(function () {
  22. chicken_btn = document.querySelector("#root > div > main > div > div.ClubHeaderInfo > div.ClubHeaderInfo-container > div.ClubHeaderInfo-buttonGroup > button")
  23. chicken_btn.click()
  24. })
  25.  
  26. // 点红心
  27. function likeClick(){
  28. return new Promise((resolve, reject) => {
  29. let elem = document.querySelector(`#root > div > main > div > div.Club-container > div.Club-mainColumn > div > div.ClubPostList > div > section:nth-child(2) > div.PostItem-footer > div > div.css-2imjyh > div`)
  30. console.log(elem)
  31. if (!hasClass(elem, "PostReactionItem-chosen")) {
  32. elem.click()
  33. resolve(true)
  34. }
  35. reject(false)
  36. })
  37. }
  38.  
  39.  
  40. //点关注
  41. function Follow() {
  42. return new Promise((resolve, reject) => {
  43. let elem = document.querySelector(`#root > div > main > div > div.Club-container > div.Club-mainColumn > div > div.ClubPostList > div > section:nth-child(2) > div.PostItem-head.PostItem-webHead > button > div`)
  44. if(elem!=null){
  45. elem.click()
  46. resolve(true)
  47. }
  48. reject(false)
  49. })
  50. }
  51. //评论
  52. function commentClick(time) {
  53. return new Promise((resolve, reject) => {
  54. document.querySelector(`#root > div > main > div > div.Club-container > div.Club-mainColumn > div > div.ClubPostList > div > section:nth-child(2) > div.PostItem-footer > div > button`).click()
  55. resolve(true)
  56. })
  57. }
  58.  
  59.  
  60. //点击展开
  61. function showAll(time) {
  62. return new Promise((resolve, reject) => {
  63.  
  64. document.querySelectorAll(".CommentMoreReplyButton Button").forEach((res) => {
  65. res.click()
  66. })
  67. resolve(true)
  68. })
  69. }
  70. //点击 赞
  71. function zanClick(time) {
  72. return new Promise((resolve, reject) => {
  73. document.querySelectorAll(".CommentItemV2-likeBtn").forEach((res) => {
  74. if (!hasClass(res, "is-liked")) {
  75. res.click()
  76. }
  77. })
  78. resolve(true)
  79. })
  80. }
  81. //关闭
  82. function closeClik(time) {
  83. return new Promise((resolve, reject) => {
  84. document.querySelector(".Modal-closeButton").click()
  85. resolve(true)
  86. })
  87.  
  88. }
  89. //删除
  90. function deleteNode(time) {
  91. return new Promise((resolve, reject) => {
  92. document.querySelector(`#root > div > main > div > div.Club-container > div.Club-mainColumn > div > div.ClubPostList > div > section:nth-child(2)`).remove()
  93.  
  94. if (document.querySelectorAll(`#root > div > main > div > div.Club-container > div.Club-mainColumn > div > div.ClubPostList > div > section`).length <= 2) {
  95. window.scrollTo(0, 200000000)
  96.  
  97. reject(false)
  98. }
  99. resolve(true)
  100. })
  101. }
  102.  
  103.  
  104. async function executer(callback,print,T,F){
  105. try{
  106. await callback()
  107. print.call(null,T)
  108. }catch{
  109. print.call(null,F)
  110. }
  111. }
  112.  
  113. async function main(){
  114. await executer(likeClick,console.log,"点红心成功啦!","点红心失败可能是已经点过");
  115. await sleep(100)
  116. await executer(Follow,console.log,"关注成功啦!","关注失败可能是已经关注了");
  117. await sleep(200)
  118. await executer(commentClick,console.log,"评论点击成功啦!","评论出错");
  119. await sleep(1000)
  120. await executer(zanClick,console.log,"点赞成功啦!","点赞失败可能已经点过");
  121. await sleep(1000)
  122. await executer(closeClik,console.log,"关闭窗口成功啦!","关闭出错");
  123. await sleep(200)
  124. await executer(deleteNode,console.log,"删除节点成功!","元素数量不足滑动刷新");
  125.  
  126. }
  127. let interval;
  128. let isOn = false;
  129. let nav = document.querySelector("#root > div > main > div > div.ClubHeaderInfo > div.ClubHeaderInfo-container")
  130. let mybtn = document.createElement("button")
  131. mybtn.style = `width:200px;height:50px;background-color:white;color:#0084ff;font-size: 14px width: 88px;
  132. height: 34px;
  133. border-radius: 5px;
  134. display: -webkit-box;
  135. display: -ms-flexbox;
  136. display: flex;
  137. -webkit-box-pack: center;
  138. -ms-flex-pack: center;
  139. justify-content: center;
  140. -webkit-box-align: center;
  141. -ms-flex-align: center;
  142. align-items: center;
  143. background: #fff;
  144. font-weight: 600;`
  145. mybtn.innerHTML = "开始点赞"
  146. mybtn.addEventListener("click", (event) => {
  147. if (!isOn) {
  148. interval = setInterval(function () {
  149. main()
  150. }, 5000)
  151. isOn = true;
  152. thisTime = 5
  153. showTime = setInterval(function () {
  154. mybtn.innerHTML = thisTime.toString()
  155. thisTime--
  156. }, 1000)
  157.  
  158. setTimeout(function () {
  159. clearInterval(showTime)
  160. mybtn.innerHTML = "结束点赞"
  161. }, 5000)
  162.  
  163.  
  164. } else {
  165. clearInterval(interval)
  166. isOn = false;
  167.  
  168. mybtn.innerHTML = "开始点赞"
  169. }
  170.  
  171.  
  172. })
  173. nav.appendChild(mybtn)

QingJ © 2025

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