正确跟帖的方式

绕过国内网站的审核, 目前支持网易, v2ex

  1. // ==UserScript==
  2. // @name 正确跟帖的方式
  3. // @namespace ysaerg
  4. // @version 1.1
  5. // @description 绕过国内网站的审核, 目前支持网易, v2ex
  6. // @author ysaerg
  7. // @include /^https?:\/\/comment.\w+\.163\.com\/.*\/.*\.html$/
  8. // @include /^https?:\/\/v2ex\.com\/t\/.*$/
  9. // @todo /https?:\/\/tieba\.baidu\.com\/.*/
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. var chinese = {
  14. 民: '泯',
  15. 自: '目',
  16. 杀: '纱',
  17. 死: '屎',
  18. 主: '猪',
  19. 统: '捅',
  20. 村: '木寸',
  21. 科: '禾斗',
  22. 处: '畜',
  23. 局: '菊',
  24. 部: '步',
  25. 厅: '汀',
  26. 省: '绳',
  27. 县: '馅',
  28. 国: '掴',
  29. 家: '稼',
  30. 马: '玛',
  31. 宁: '狞',
  32. 毛: '猫',
  33. 邓: '灯',
  34. 江: '茳',
  35. 泽: '沢',
  36. 谋: '某',
  37. 王: '仼',
  38. 周: '週',
  39. 胡: '葫',
  40. 刘: '浏',
  41. 李: '锂',
  42. 吴: '捂',
  43. 温: '溫',
  44. 习: '夕',
  45. 贺: '赫',
  46. 贾: '價',
  47. 彭: '嘭',
  48. 潭: '覃',
  49. 新: '亲斤',
  50. 诚: '铖',
  51. 事: 'story',
  52. 职: '耳只',
  53. 称: '禾尔',
  54. 英: '瑛',
  55. 语: '言吾',
  56. 答: '嗒',
  57. 案: '桉',
  58. 公: '蚣',
  59. 务: '兀',
  60. 员: '猿',
  61. 宝: '孢',
  62. 轮: '纶',
  63. 胎: '肽',
  64. 政: '钲',
  65. 变: '煸',
  66. 枪: '炝',
  67. 声: '笙',
  68. 戒: '琾',
  69. 严: '盐',
  70. 京: '菁',
  71. 真: '稹',
  72. 理: '锂',
  73. 贼: '戝',
  74. 假: '茄',
  75. 异: '弈',
  76. 士: '仕',
  77. 军: '莙',
  78. 日: '衵',
  79. 高: '篙',
  80. 刊: '衎',
  81. 物: '焐',
  82. 议: '仪',
  83. 人: '朲',
  84. 权: '荃',
  85. 党: '谠',
  86. 独: '牍',
  87. 裁: '菜',
  88. 迫: '珀',
  89. 害: '嗐',
  90. 委: '萎',
  91. 论: '抡',
  92. 探: '镡',
  93. 斯: '嘶',
  94. 哲: '喆',
  95. 胜: '笙',
  96. 藏: '臧',
  97. 经: '泾',
  98. 命: '掵',
  99. 革: '諽',
  100. 劳: '捞',
  101. 牢: '涝',
  102. 佬: '姥',
  103. 监: '鉴',
  104. 狱: '域',
  105. 左: '佐',
  106. 右: '佑',
  107. 上: '丄',
  108. 下: '丅',
  109. 东: '岽',
  110. 南: '喃',
  111. 西: '茜',
  112. 北: '邶',
  113. 前: '偂',
  114. 后: '逅',
  115. 报: '铇',
  116. 进: '琎',
  117. 禁: '僸',
  118. 美: '镁',
  119. 业: '邺',
  120. 帝: '蒂',
  121. 城: '铖',
  122. 团: '団',
  123. 派: 'π',
  124. 怨: '鸳',
  125. 冤: '鸳',
  126. 封: '葑',
  127. 锁: '琐',
  128. 血: '桖',
  129. 邪: '偕',
  130. 地: '递',
  131. 岸: '堓',
  132. 宪: '筅',
  133. 社: '渉',
  134. 操: '鄵',
  135. 镇: '嫃',
  136. 审: '渖',
  137. 明: '朙',
  138. 文: '呅',
  139. 攻: '杛',
  140. 打: '哒',
  141. 骂: '瑪'
  142. };
  143.  
  144.  
  145. var sites = [
  146. {
  147. url: /https?:\/\/comment\..+\.163\.com\/.*\/.*.html/,
  148. ele: ['#replyBody']
  149. },
  150. {
  151. url: /https?:\/\/v2ex\.com\/t\/.*/,
  152. ele: ['#reply_content']
  153. },
  154.  
  155. {
  156. url:/https?:\/\/tieba\.baidu\.com\/f\?kw=.*/,
  157. ele: ['.editor_textfield','#ueditor_replace']
  158. }
  159. ];
  160.  
  161. String.prototype.toUnicode = function(){
  162. var str ='';
  163. var text = this.toString();
  164. for(var i=0;i<text.length;i++)
  165. {
  166. str+="\\u"+parseInt(text[i].charCodeAt(0),10).toString(16);
  167. }
  168. return str;
  169. };
  170.  
  171. String.prototype.toChinese = function () {
  172. var text = this.toString();
  173. data = text.split('\\u');
  174. var str ='';
  175. for(var i=0;i<data.length;i++)
  176. {
  177. str+=String.fromCharCode(parseInt(data[i],16).toString(10));
  178. }
  179. return str;
  180. };
  181.  
  182.  
  183.  
  184. function chooseEle(url){
  185. for (var i = sites.length - 1; i >= 0; i--) {
  186. if(url.match(sites[i].url) !== null)
  187. return sites[i].ele;
  188. }
  189. }
  190.  
  191.  
  192. var currentURL = window.location.href;
  193. console.log(currentURL);
  194. window.setTimeout(replaceCharactor(currentURL), 3000);
  195.  
  196. function replaceCharactor(url){
  197. var selectorArray = chooseEle(url);
  198. console.log('selector array: ' + selectorArray);
  199. if(selectorArray === false){
  200. console.log('url not support');
  201. return false;
  202. }
  203.  
  204. addListeners(getDOMs(selectorArray),function(ele){
  205. console.log('dom: '+ele);
  206. if(eleIs(ele,'ueditor_replace')){
  207. console.log('unsupport yet');
  208. return;
  209. }
  210.  
  211. var replaceText = function (){
  212. text = ele.value;
  213. if(text.length < 2) return;
  214. console.log('original texts: '+ text);
  215. text=text.toUnicode().split('\\').join(' \\');
  216.  
  217. var patterns = Object.keys(chinese);
  218. for (var i = patterns.length - 1; i >= 0; i--) {
  219. var p = new RegExp('\\'+patterns[i].toUnicode(),"g");
  220. text=text.replace(p, chinese[patterns[i]].toUnicode());
  221. }
  222.  
  223. var finalTexts = text.split(' ').join('').toChinese();
  224.  
  225. console.log('final texts: '+finalTexts);
  226. ele.value=finalTexts;
  227. ele.removeEventListener('mouseout', replaceText ,false);
  228. };
  229.  
  230. var watchText = function() {
  231. ele.addEventListener('mouseout',replaceText, false);
  232. };
  233.  
  234. ele.addEventListener('input',watchText,false);
  235. });
  236. }
  237.  
  238.  
  239.  
  240.  
  241. function getDOMs(selectorArray) {
  242. var DOMs = [];
  243. for (var i = selectorArray.length - 1; i >= 0; i--) {
  244. var d = document.querySelector(selectorArray[i]);
  245. DOMs.push(d);
  246. }
  247. console.log('doms: ' + DOMs);
  248. return DOMs;
  249. }
  250.  
  251. function addListeners(DOMArray, callback) {
  252. for (var i = DOMArray.length - 1; i >= 0; i--) {
  253. callback(DOMArray[i]);
  254. }
  255. }
  256.  
  257. function eleIs(ele,classOrIdName) {
  258. // check http://stackoverflow.com/questions/1789945/how-can-i-check-if-one-string-contains-another-substring
  259. if(~ele.id.indexOf(classOrIdName) || ~ele.className.indexOf(classOrIdName))
  260. return true;
  261. return false;
  262. }

QingJ © 2025

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