BYR SMTH BBS ip2location

显示北邮人论坛、水木论坛用户发贴IP的物理地址

  1. // ==UserScript==
  2. // @name BYR SMTH BBS ip2location
  3. // @namespace http://bbs.byr.cn/
  4. // @description 显示北邮人论坛、水木论坛用户发贴IP的物理地址
  5. // @grant GM_xmlhttpRequest
  6. // @include http://bbs.byr.cn/*
  7. // @include https://bbs.byr.cn/*
  8. // @include http://www.newsmth.net/*
  9. // @version 1.8
  10. // @author Binux
  11. // @author John Wong
  12. // @author Ryan Zheng
  13. // ==/UserScript==
  14.  
  15. function showLoading(ip, font){
  16. var span = document.createElement("span");
  17. span.innerHTML = " [ LOADING... ]";
  18. span.className = ip;
  19. font.appendChild(span);
  20. }
  21.  
  22. function onLoad(event) {
  23. var fonts = document.getElementsByTagName("font");
  24. for ( var i = 0,font;font = fonts[i];i++ )
  25. {
  26. var result = font.innerHTML.match(/\[FROM:\D{0,5}([0-9a-fA-F\.:]+.)\]/);
  27. if(result && font.lastChild.nodeName != "SPAN")
  28. {
  29. var ip = result[1].replace("*","0");
  30. showLoading(ip, font);
  31. sendRequest(ip);
  32. return;
  33. }
  34. }
  35. }
  36.  
  37. function sendRequest(ip){
  38. setTimeout(function() {GM_xmlhttpRequest({
  39. method: 'GET',
  40. url: 'https://pytool.sinaapp.com/geo?type=json&pos=1&ip='+ip,
  41. onload: function(responseDetails) {
  42. var response = responseDetails.responseText;
  43. var ret = eval('(' + response + ')')['geo']
  44. var ip = ret['ip']
  45. var loc = ret['loc']
  46. showAddress({'ip': ip,'loc': loc});
  47. }
  48. })}, 0);
  49. }
  50.  
  51. function showAddress(response){
  52. var spans = document.getElementsByClassName(response.ip);
  53. for(var i=0,span;span = spans[i];i++){
  54. span.innerHTML = " [" + response.loc + "] ";
  55. }
  56. }
  57.  
  58. onLoad();
  59. window.addEventListener("load", onLoad, false);
  60. window.addEventListener("AutoPagerAfterInsert", onLoad, false);
  61. document.addEventListener("DOMNodeInserted", onLoad, false);