Omegle IP, Bot Skip, Watermark Remove with Enhancements

Improved features including IP display, bot detection, and auto-reconnect.

  1. // ==UserScript==
  2. // @name Omegle IP, Bot Skip, Watermark Remove with Enhancements
  3. // @namespace https://www.youtube.com/channel/UCL3Nla6-_a2zVOPrbZzSUnA
  4. // @version 1.0
  5. // @description Improved features including IP display, bot detection, and auto-reconnect.
  6. // @author HackDoctor
  7. // @match https://omegle.com/*
  8. // @match https://www.omegle.com/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. window.oRTCPeerConnection = window.oRTCPeerConnection || window.RTCPeerConnection;
  13. window.RTCPeerConnection = function(...args) {
  14. // Remove watermark
  15. const logo = document.getElementById('videologo');
  16. if (logo) logo.remove();
  17.  
  18. const pc = new window.oRTCPeerConnection(...args);
  19. pc.oaddIceCandidate = pc.addIceCandidate;
  20. pc.addIceCandidate = function(iceCandidate, ...rest) {
  21. const fields = iceCandidate.candidate.split(' ');
  22. if (fields[7] === 'srflx') {
  23. let list = document.getElementsByClassName('logitem')[0];
  24. let req = new XMLHttpRequest();
  25. req.onreadystatechange = function() {
  26. if (this.readyState === 4) {
  27. if (this.status === 200) {
  28. let obj = JSON.parse(this.responseText);
  29. list.innerHTML = `<strong>IP:</strong> ${fields[4]}, ${(obj.proxy ? 'proxy' : 'not proxy')}<br/>
  30. <strong>Provider:</strong> ${obj.isp}<br/>
  31. <strong>Region:</strong> ${obj.city}, ${obj.regionName}<br/>
  32. <strong>Country:</strong> ${obj.country}`;
  33. } else {
  34. list.innerHTML = 'Error retrieving IP information';
  35. }
  36. }
  37. };
  38. req.open('GET', 'https://ip.madhouselabs.net/json/' + fields[4] + '?fields=country,regionName,city,proxy,isp', true);
  39. req.onerror = function() {
  40. list.innerHTML = 'Network error occurred.';
  41. };
  42. req.send();
  43. }
  44. return pc.oaddIceCandidate(iceCandidate, ...rest);
  45. };
  46. return pc;
  47. };
  48.  
  49. let autoReconnect = true; // Set this to false if you don't want auto-reconnect after bot skip.
  50.  
  51. document.addEventListener('DOMNodeInserted', function(e) {
  52. if (!e.target.children || !e.target.children[0] || e.target.children[0].className !== 'strangermsg') return;
  53. let msg = e.target.innerText.replace('Stranger: ', '');
  54. if (msg.match(new RegExp('^([mf]\\b|[mf]\\d)|\\b(dm|snap|subscribe|follow)\\b', 'gi'))) {
  55. let dc = document.getElementsByClassName('disconnectbtn')[0];
  56. if (dc.innerText === 'Stop\nEsc') dc.click();
  57. if (autoReconnect) setTimeout(() => dc.click(), 1000); // Auto-reconnect after 1 second
  58. }
  59. }, false);
  60.  
  61. // UI for toggling auto-skip and auto-reconnect
  62. let controlPanel = document.createElement('div');
  63. controlPanel.innerHTML = `
  64. <button id="toggleAutoSkip">${autoReconnect ? 'Disable' : 'Enable'} Auto Skip & Reconnect</button>
  65. `;
  66. document.body.appendChild(controlPanel);
  67.  
  68. document.getElementById('toggleAutoSkip').addEventListener('click', function() {
  69. autoReconnect = !autoReconnect;
  70. this.innerText = `${autoReconnect ? 'Disable' : 'Enable'} Auto Skip & Reconnect`;
  71. });