Greasy Fork is available in English.

Bypass It

Automatically Bypass Restrictions and Get Straight to Your Destination!

  1. // ==UserScript==
  2. // @name Bypass It
  3. // @namespace http://tampermonkey.net/
  4. // @version 2025-05-08
  5. // @description Automatically Bypass Restrictions and Get Straight to Your Destination!
  6. // @supportURL https://greatest.deepsurf.us/scripts/527564/feedback
  7. // @author You
  8. // @match *://vn88.id/*
  9. // @match *://vn88.fan/*
  10. // @match *://vn88.ing/*
  11. // @match *://vn88.wtf/*
  12. // @match *://aylink.co/*
  13. // @match *://vn8eu.com/*
  14. // @match *://vn88n.com/*
  15. // @match *://gplinks.co/*
  16. // @match *://v2links.me/*
  17. // @match *://upfion.com/*
  18. // @match *://fb88dv.com/*
  19. // @match *://m88usb.com/*
  20. // @match *://vn88.group/*
  21. // @match *://vn88wo.com/*
  22. // @match *://vn88zx.com/*
  23. // @match *://vn88ko.com/*
  24. // @match *://vn88es.com/*
  25. // @match *://vn88tu.com/*
  26. // @match *://vn88my.com/*
  27. // @match *://v9bethi.com/*
  28. // @match *://www.m88.com/*
  29. // @match *://bet88li.com/*
  30. // @match *://cutyion.com/*
  31. // @match *://vn88tk1.com/*
  32. // @match *://vn88vc.wiki/*
  33. // @match *://fb88vao.com/*
  34. // @match *://coinclix.co/*
  35. // @match *://vn88.hiphop/*
  36. // @match *://gwaher.com/ptc
  37. // @match *://www.fb88.com/*
  38. // @match *://*.devnote.in/*
  39. // @match *://naamlist.com/*
  40. // @match *://modsfire.com/*
  41. // @match *://yeumoney.com/*
  42. // @match *://165.22.63.250/*
  43. // @match *://*.gmsrweb.org/*
  44. // @match *://modijiurl.com/*
  45. // @match *://geekgrove.net/*
  46. // @match *://www.m88sut.com/*
  47. // @match *://*.techyuth.xyz/*
  48. // @match *://vn88.solutions/*
  49. // @match *://financewada.com/*
  50. // @match *://188.166.185.213/*
  51. // @match *://earnbitmoon.club/*
  52. // @match *://gemini.google.com/*
  53. // @match *://cryptowidgets.net/*
  54. // @match *://*.wikijankari.com/*
  55. // @match *://cricketlegacy.com/*
  56. // @match *://ourcoincash.xyz/ptc*
  57. // @match *://*.idblogmarket.com/*
  58. // @match *://*.phonesparrow.com/*
  59. // @match *://financenova.online/*
  60. // @match *://bitcotasks.com//lead*
  61. // @match *://rajasthantopnews.com/*
  62. // @match *://www.google.com/url?q=*
  63. // @match *://freepayz.com/framed-ads
  64. // @match *://utkarshonlinetest.com/*
  65. // @match *://www.youtube.com/redirect*
  66. // @match *://www.facebook.com/flx/warn/*
  67. // @match *://gemini.google.com/app?msg=*
  68. // @match *://www.instagram.com/linkshim/*
  69. // @match https://www.google.com/recaptcha/api2/bframe*
  70. // @match https://www.google.com/recaptcha/api2/anchor*
  71. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABcCAYAAAD9JuLrAAAAAXNSR0IArs4c6QAAIABJREFUeF7tfXecFdXZ//ecabfuLr2JiKIiqFhIwBIVY3vtxhaJiibxjbElamJiSSQRNURNYkv0jbGkC1jQaKKx06wRAQ0WRKTD1lunnTm/z3POzO7dZYGLmL9+mY94d+/O3jnznec85fuUZfjv8bkgwD6XT/nvh+C/QH5OQvC5APnUspV7icgYEgmzQcCAYJaImMkkB/0nLelLG56UENIAoM4BfUWHfodeIzoZoHOklJD0U9uwpTSEjGBIKUMpYUouw4hJI2KGFDluhlVPhmCmNyBvbxw/gK39nLDZpo/ZLiC/fOffPg6YMVJIgEUSAjIUzJSCmVYEC5IZ4IhgygB25INBgCFCxADBDETgANeAqq8RAT1eBX14/L5kXT9nTP1eJAnyiPFGJ8uMKPTyGfbKkRP3ufni0fkXtwmJ7Tz5MwN5wC9nvcoahk6oRg4EMyGlQAT6xyHpU5kNLY8SXEawpAaRwIhYBEkQM0DCVLdA34OAkt1fGUks/U4vQNN1mOmAiQii7MIxGAw7Ai83t04cMeAf5x66z6UHNrLW7cSorl//zECe/8fn//D+xuDsID0EAXcQsRBgtEXplkPQvlYARSQ5tFk1wAq8+DwNnKneUz9kEpKEjl6V+paIIgmmVqm/r30l8CuugOM4SNkGDMYRBgGkV0ba9IpD7Oo7V3zl4PO+3JRaVhca23HSZwaSrvnNPy6Y+2ErO6hkZBAZDBGnGw3BEMKUAupbadHmRshIckl/EhYCHEHNVtbLIOmtPWo3evI+06jGBwc3LHieB3CmgIxCwDA4mBnCdDdUR5nlpd864dDJRw9tWLodOG31V7cLyEXtss/ts9/85/JStH9bIMGyOUQmhwhdMLeIjG0pESR96bMsfG6ROlNgc3ikBJR1Yd3x61x0LKRaVfR6CID56idMkiqxlIqgh0VqxoQH02/3d0uzhZcfedDkg3b8z0nmdgFJN/BqRe7w28df/fvS9dU9Rb4vCgLwhY+BjWlU2lvhGKa6pYBl4HMbgjFIJmFAGx+uRHTrh9r+mxwhOPPUg+CRo4AMOOlejjBWH+Qf5N2iv4f0/nXpCUdOnrATW771q237GfXdxVY+d74rR93zyNxXlqwvDQnyAwAni3KpHRmHwxAByMKGzELICVRD6UROLo8UMGj/1nH0LpWRMmCkj3lEEmkg5IDgQBCLuQlT7Y7+pvCGcvfti0447OQjBrH1dVxym07pFcgJU3//y9emnnv5tnzS3KIce/fsuc980B4OE5kmeCJS1pYAI71Gt6y3nbbS9DNymTa3rWuvvfmtnagFrq09eaSc6a2d/FJkwDY5GALYbmtpTDp6+/xTDjv5mM/Zmm8C5KQ7nn9tZcn/Ysrmrx+6x/Df3n3cmPvqBfRVV+766xmvPvdha2VH3tgfRT/SN8UiGJ2IJda8+6V737rdDdAmgEoCSNtyYfhal9J70gR5sPS1ZVkol8swTRsGC5ES7aWRuei1K4+ZdMrBA1ix3nvb2nnd7mb6nDWX/eHlf90eZPsqPddgeOLQUX2n3XHCF6Zu7YOSn79WkLvd8+jcx5e2eHu4qTx8K63A5ASmDGHEhoXcIklWNv7FzUldYsl7BVr9ErlVEYRBXkCovucEZGSCE6imAT8MwLgJyzLgeW3oy7zSro54/ZLjJ50ysR8r1HtvWzqvG5Bn/PqZxSsL/p4FYQK5rPbjyu04fO9RD959/Njz673gGxvl7rc/MffJTwJz1zZO1tpU7g4pfpv8E4WK2Wlha0HsCVhPl6i7gddA6oNUiQCT2nVnsNT/w4gjjAJkcin4Xhk8ChC6LrKpdGlkKnr92iMPOGH8UFap9942d14nkM+0y5E33TXr48jOI7BT6BARItMCmAGz0oojdhv8l9u/Mn5yvRd8sVXuefusl2asFOk9KmZaSQttb5JIJkhfEpAsdtB1ENhTKumsJDJKrqvdJ72dtXOuv9eaQ+tkpX9VDG9ASAbTtuAGJUjhI5dKq7Paqz76ISiPszreOO+IY/5n0kjm1ntvvZ3XCeQDi0qT73vypT8FThYuJ/eBI+Qchm0h8sqwC+tw7MRxj04/asyp9V7whYLc/Y5Zc2av9dnuPt2w5SDwyVexIeNYnMlAgZn8o+1OhxFpi8wjUgddpp2AVEaL2A1l/Ws2VacejpSnoKDtFGFFCHQuXTAOM4qQDSrejlk2d9yUA4+aympOqPcm4/M6V3H3W8Wp9z/98vXINsKjCIR0NcXDBlMhX84IUFm/Asd9cfxjtxw79iv1XufpFjnmd7NfmLWmKveoMAcws4CZghdIWKYDGbpaxzEZX1MvyYhI1xGQJD+a6CCJ0zE6LY4paVWRTi+mXwWT5LP2iJZ6Sr0IffSzpde/un7e05ec+OV676vneZ1A3jp//V1/fOG1i5FrUj6f4rGImeEWfK8Cx/CRM0L4LWtxxL5jZ//8xP1PY4wC7K0f/2z29rjnqTdnLy9GuworA26l4boeTMZhKCEIERgRBJeQjIFFHEZkg0kDMiIHHgiNEFEMGIWeZo0yTd6vXclmgqXOU1TUhBAWDyD9KvKm4/UT3vNPXXj4cVu/o03P6ATyxrmf/mbmnEUXkkSG5JNFDIzbqHohcvkMfLcDGVvCkT6C1nU4ZOyop87/yoSvjmWsVM+FSTLv+/vrf15bkuPKEQPnppIY8iUjHiLkApKHmjAjqyt0pCKlgYBxBCYBTWQIiJmELZj6mqKk3ix6vUCazIVpmggDC+nAdUfI4tOPXHxM3eorufdOIH86b+Xtjy5YdJkkl0WQRHBwboNxC1XPQyptwfOLsAzAhg/ba8PEUcOfvfjkCafvyupzIZ5rlzvf88RrT6wo+GOJbJCGCS8yIXgEyT2ABTFQBDBFKk4cp7NYYimK0UCaEW1/rSc354N2GaXNPGpyySyg6pbh8DSypg2/o1DYo681a8aUCd+oR0B6AfKT2x5/fekVoZ1BKIxYR5kIKTJwHJTcApjFAZOBSw8ZMwDa1uGQXXd+9lunTpi8B2Mt9VyYvIP7H58/a22xvF+HMCAyfZVhY4zMUaC2G1l28gMjRULYCDlToV9ItppRNBQpIGmLJ1Z8c9femmRyi1wkChiYUiOOnQHrWF/Ytyn4y4PnTLqwnnuiczolcuqcZdNnv/HBVZ6VVqSsRQ5zSPygCRimosgiC8qS+6ICW/posICgpUUeuscuz5598t5fm1AnmC+2VXe6/8nXn1xe5nu2mDl4hqUss0GxN2UNKCKPWSHNS5ogK0thH0mvkjSmOU8OA3JLMeRWkIiEhGE7qEQBDKICQw/Mr6Avl4U9B6Z//9BpEy6tB8xOIK9/8eNpj7/176sDJ8uZacMUHNInbs9GGFFqAAi4RGgwSEOCiyocSDicQbZvxMSR/Z695MwvnbsXq48QeMOVO0//8yszPg6s/ctGVhEOejHk9mhAVZyuUYsdeFNJpVIFsZ3jsBSgPa1zPTfPyfKT22nZ8FgEPwqQStHDCcF8AavQ0nLokIaZd5114Le39nldxmbe6utnzl90XZjJmqGk7QtY0gaLNFuj4lkO+JxCO52HoQtypuQFoliM9h3e95/fOf6As8c3sOatXZh+/raUO930pzmPLy/KccJsQDWyIU16cCG4dOGYlNzxKBMEzlLgpoOItnkUIuJV7foIDWRybAugBKQSGMbhGxFCrj0HZc2jCKkwglP1mvcb3PTYvWeN+98t3VMnkDfPXfWjhxcsuS7M5Gyf4o6IADIBlSrQQkFSGapkFeXyNBMecsoNRnC4gxw8jEq5z1553lFn78fYxnrAfK0qR97yl2dnrCqa40VuEErSQXu1igF986iW25E2SWoiiJCDCCV6mOQ3c5N0Kj1huyZM3JRl39IaEiDpHJJyupdQ59SUaiEtkreyCNavbD9kh+zf7jj7gHM293mdQE6fs+bahxcs+pHI5h1P6SfitSmplZxCTjFFPBQ3R7AoZkYEl2grTo6zVM6zJSVG90/985rJE79WL5j/qsoR9z4+d8abKwtfFH12RGDnUCoVkXYsQPgwDEqAUVZSZxo5xdRRFZEgooLyRV0SqR56Dyec3lNpj14OFu8+UicU+ZDhI31MaREiPQza7pGPnPSaRzWypx44++Dzev2c5M3pc9dd/fD8hdeLbIND5D0TEhY3ECndriMLLZXErACOCNUW90xKGkRIk8KuuEhlG8ErLdinMXz2O6ceMeWLObauHslcIuWOP3vw5T/8uy04RDYOhhcyxdwIQQk1HdPQoUkJCZNcJUa3T4qlOyW3LUCqqFxly0mdaFeKhEUl9FS0HoJHPiweIeu2tY7ry5+/5+wjzuh5T11be87qH8xcsHhqlGlIEZAEFifaPtJ8YrK1iWwgsScgKRb2OYe0LBSrPpr69EF7y3qkTaCfY0Ujc+zF75104Fn75evb5q9X5PB7H5t/3/sbq5P8TKMVWRkEkUBE7gmth7ZdJBCG9BDpe0tbc4q/e4aC8febk0T1cJTuZ4pytgVtZ+0RULIu4MS2m2CWCSEqgFtEv5QJFNta9xqYe+y+r33pm7VgdgJ504LVV82as/gnBGSgRFoDGahcNEli8moq/emE+sLEhJuZDEgdFCsl9G/KwnVdpRIctwMTh+Wfu+isgybXu83fkXLg7x57664Fy9eeEmX7mBHX4WoqItnTbBCtz6P3LUe5RAqQzwhkRNEVhZxx2oPuSaswApLDlxy2Y1L6DrJahCMk+sHduP8AZ/bNZxz0LRYTHZ1ATnt19fdmzVnyU57KpwNFjJJYaiBVZQQPY92hf5YSpCd1Qt8XEbhjQHK6KUrmS4S+h6aUA6Na9HbKGa9cdcZhk+u15h9K2XDNQy+8tNoV+1aFlGnLCfMiZHA9U0QMoZ1Gu51BOSIG3NmsxdYU3OZ0o1ZV5OxrlaEjJi2VWjJJjVUpveukQORGKgrRwDxkwyrc5nVth40Z/s8bzzj4LAKzy/15ddWVM+e8e4MGkuh6DmZwhOoJ6e2t0wbkbtDWFkoyRQiVoEcUIEAITwpIk8MkUEOKUgxkg5I3tq/14oXHHnrexDoTT7NXl/f96zPP3T5w6PCVOw0d9vKwPn0WpgVCN2LZgh8M+bC1MHHZuuYvr17fujeRLLQVFXVMVR+xzlSxOBmnGhpOw6qp34QDTewpi4FU9F2sLyPDUZysHwJpBGgIO+BUO1aN7N/05jlHH3z5pCHsE/Ugkuc1bcGaKx6bu3hamMqlSaSJz1OKPub1VLmJSl4Z+ulROCeV/dbARjq8CyiUI5VAupPiDtriIkCjKJZGNWHeBacdce5BebahHgNUzzmPfuqd9NhLr936cUd1lJdqRJVnIbiNwA1g2yakcGGQlaeiBBUGGhDEmktTCYqMPJgGg++HsG0bFt2Z54KTT6lKcCTsVAZBIGH6VTT6Hev336HPK6ec/sXJk2rYry4dOW/NFY/MX3xDkM5myFckOouANGKg9PMj4LRfyVigtjVJgzY+VFkRIlSOLTnuOpVgMxsOpUeLLUj5reXRA505V5153JRxnyOY01/88NZ/vLHoyqrThIrVgDJM5T14fpVqPBQ3IJW7JmFwG9xIKyDJaEVRBZmUDdIcpGbpnkkyU2kbURRCiAC+W0H/xjzC1vXemL6ZJy+dcuiU8ax7eqKGRltz+aMLFk/bJiCJSYy3umJjVLzlq+iAthoBTywSedKkr7IOB/NKHUOM6tyfX3LclHqJji1J5t8+qhx4zc9+9ZePPlkzeLd9JtjpYSPgZfOomiYqgYeMYWu9J4UCiZsGDE4VIBxB4MMwNTkcqQiHIaB7IO+UmKmqi2zagSlcRG0rg4m7DHn266cfeEZPELtt7RvnfhYgSW+aSjJpC2tRDTorzuhbUxrwXIHGfgPQ3NqChkwK2WpraTez8MIPzj3l/LHbkV9+/LXlR//4tv+bubHk51N2FhUygAMGYcjYMahkUmBpvSWJ2KBIXulMVXjZVZhg2gaqvt5dlNuhWJ7cLYq4eRgizSMYhQ3RvjukZ3/3rMOmjGa9p3C7JHL+mu88Om/xjUE6m613a5NOVHVSivq31bZXlBjFqqgq/4zICAEbZR/IZFJApQVNtNeLpdZ9hzUuuPiEA87Zu4m11aMPa8+Z+dK7p9/+2z89sL5DZInTlCKElUnBMzisfn0xcPRoiGwOLrMRRGQ8DRVgkHRSEox0JkVMpLzIVyVTwInPFmQfTFXbmaKSmpZV0RdGND51+ZkHnL0l3rVWR172yPzFN20rkFRtS0BK6UBAl6WQ+2DJqlq0KhQ1HJD1Iz1F6QrpVWHAgd2xpjShsbrg9u9MPmpbgHzo72+d/Ytf3/fbQpWlJM8jk2uE61fgBS7srAOXrHJDI4bvtTd4nwEoCSI6DJXaUGVWEQmAp9y1UNGEurArFD5snlExfKVSQU64+MKw/NMXnbn/2XuzLT/sGtJi9SWzFiz52WcHkqIMXcKnXDdVEBCp4k/ywajigZR7qVhB/6ZGwPeRL61/89tH7nn9mV/Y5el6gfzzs++cNf1Xv/6TtBtYxQNMnkO56iLfP4eqX0YUBuC2jaIrkBs8FH132wMilwdSOW0uKUpScTUBR65aOk75BohCAcdKAV4VGeFhzKD8Mxccu19dbFbN1l578aPzFk3fdiB1UahglGLVrpGqvo3BZIGPlGMhcKtqwQ25RohKAazcvOrbpxx5/tfH5J6rF8QH/v726Xfd+8BDHZUgDSurXC9DWDAsE770VSkf45SK5eDMBuWGrIGD0LjjSKQHD1SFhEHgwbQ4LINSuhHx8RR1wmZEG0rwMIBRacc+Q/s9e+4R48+t1+/tksh5ay+aMXfh9CjXkKNkk+iMVU0FTm/uDxEIZGO6iqMYzIhI2Zr8MREMpq1COYvOLbWjMSp+dP5R4688b79hT9QL4l9fWHrSTb+865EONzLS+b6olKtw0hmIkOSfdCDlfWL2PHa6KQ6n/JPTrx/67roznEEDUSbrzYCUaSm1Q1/T+kQlQEaGSLvtGN0n9czFZxwyZa9cfSR1N6t907y13545d+HPtwXIpEieFpxIIYWNRLFRNEEgU7RBSS4RRMhEHvqIwqrJk8Zf/I0vDK4bxCfnv3/y939y2x+NbL+sH5mouj5sy1BuizZ3UAQtHerBdooHGQ6myOgol0HfUTujaeQIVCOgWnXhpLPwSa8aJnKmg3DDWuwzMPPsNecedNZwtm215zXG5rMAqau/ajN5FIdTBQPV+FBoGVgple4UxXYMMqprvnn4uMvOHDf0kXol8ak57x5z5Y9ufFSk+qdlqhHFKkUsFvIpC4VCG3iKiF3aCVzlwynm0p6EDqDpEYdMohKEMPs1YtDuo5EaOAguMyEMA7mUg3LrRuQRYq8BTc9fdMz40z+LF9Fza5NEZuvd2koCVFeCDvQ7iz5VrK5vxo8EUixAY1ho/fpRB5913l5Nz9YL4qPPvX7M9F/e+wfXyPQviBQiMwPDSqFaLiJjEf0lEDChQ9GI9DOpIRJJXaGmi/p1UotyIsVAIMxkMXj3PdBn5Eh4yvgIZEQVw6xozoXnH3bcwZvxE7e25p4SectnBZLBV9aQcjwCKbg8p4B0ZAEDjWLL1w8dd8GUMf0f29qCkp/PfvGtY66eevPvfTM3wGkcgnZXwkplVa1jQyYDBBWQ+0oGRpWxqM4JYqbI8dYtJqp7wqCIJoRtkkcBFL0Idr/+6Lvbrmgc2B8Wk+iD6gdXnnPE4Qdm2Op619fzvO0HUlLFGpECns5JC+pgSKPCG5SU2mELjtxrh1vuPnzEVfUu8t1337XP/e40r2pkwTP9UPI5QsNC4IfIZzMIqhVYlKRKiFjFauuQlCvJpM1O5S9EORCTTo62ADdMcMNBKRQQ2TwGDhuAMbuNeGfySYf/7ylD2Ov1rq+383pubZLIzLZubaLYKMbmVNRE9TowlWuiuGZexRAn8K449bBjj21iL9S72K9efvOTby1ddXwlSgN2RjEz5COS5edMolouIZtOKd9PE89EoXUZPc0vRmBC+7BeSCRfBMvJIggjeG6ItC0xdvSQpT+99bKJ4xnrqHdt9QB5a5RrSPcEkn5Rc3p6C5ERIRot0ZHK6VB5ZuLxSOHrfwQwZXSMahtGOD5+dP6pR0/Msbp15DnX/99TL73+3rFmqlH1z6h10Beq1ISr7CJXLXa64kK35ulXXa1B5AOH61bAiTOl6t1AwOAcDixEbhGQBRx84D6PPTD123VX2G0RyGlzV1/y6PzFt1IWUTVuJCVzoBJiDWTCR5IEGFIDqSVPs8udzDIRPko6KIDUFRnhxtXYZ0g/XHjCpCMO6c+er/fpf+26O+cvePODAxjLw7Cz8H0fhs0QGkR3CfBQdzUkro9+uLXFpzrKSt5LqGy6p4TEiIISJh2018MPXv/Nr9a7rs3qyBjI20Q2b/cGpHLIiX+MmzCpS0DT+MT+UEFBVyGncntUvwshzhBUSxiQsWGXWzHClrjsq8eedVBf9td6Fz35e7e9O/+t5WOsdF+4vkA6n0bFL4MxCZtrnZgcSe4mAa5nNUu3gisipulfUAH8NnHi0RMf/80Pv3FaveuqPa+20uLSR+Yt/oXI5s16gaSSPF0yEueN44JXXUhAbDpJdoSUbUO6HbCDChpEBcNyFi6cfPyUwxvZ7+tZtJTSOOPyX658beHyIdk+g1AoFNGUzqgdoDRf92xsrHK0VCZp3OQ6Pc8lBojC17TDUWpZjS8fvP+jf7j5u5+9rO/GeasJyF+JbJ5vDUhVKRtLJHF9dB9dSSbiKHUZCAEJ00KlUkIuZcNhAQwqDQxKGNKUxtdPPeaHJzax6fWAuXy5TF1z5+0r5i/8aGA21x8IpGJrpKWziEpNx32KqlI33t70IGuP7kBGCEMfmUwGoe8jCgIYoYsJ++/xxF9+dslJ9awrOaenRN5BbsGWgCRDpBYdA5nUanfF41pH6dYPA6GQcDJplMtUOUHlzC5Cv4iUJTE0zXDJsYdfe/xg56Z6Fv3uhg25H11//8olH69rEjylsnu62qJmayd3FOvNLUtkhEiSw05tIwwp24FlMJTa1uLwg/d+5I83XFT3Nt8uIPXytVHRpEZyEGAEpKbwTdtR0UV7sR3ZnI1QVGDZHKJ9A0ZnLXz/a8fffWgju6QeMJdulPnLr5u26t2PNzZYmQa1GxKjUbuVqdZRL6/7vu8pkQRkOpNFqeirIi3abRYXKDZ/Gp509MFP3v/jC+qy5l1ZRG2179ySRNLiao0NrVNvY30LnWJOdYsqTFQJcc1FBhEM24AvqjAcC8VKOwY2NQDtBQy1QnzrtEl3nzTIqAvMdztk34uuuKnlk9UdKj1AxyYtyrGV6d6W3PWokuJ++nmxXEJTY19U3EDlyaUIlJvFgo7gwH13f/LP0y/bqs7sksg5qy9+ZMHiuzYHpCok7GG1O4EkqVQUVgImRRikNzlMSWkA3a6h8iUmxd8BDMeE73pIcROOX8DwXIApRx/02Jk75euSgHc3yMEXXTlt7aqWAiLFyuujE7g4jby5Mr8uvUqZ7yQBRr+vc1CUUjSlh6DSXDnwi2OefXj65adsacd0i2xmznvnbj+V0VKn6n4IACtuYN8USJVEJ0a8czKAps7UDSmHmJJi9LXuVFCSQ/niuESQCukprMxRAqq9BSMbDVx80iH3njgoVVfJ8TurKjtccf2dK5csX6PqjqrVqmKa9LqNuHap9/ZbitBj5HWDU9wxpp606mNUhUYq9BVBR3nCfrs8PeOm721SPNX5AJMviI+cNe+dX28rkJwST8pK0i7WRCmBpYyPCtM0oImvl/CFumqDUgWRijxI0Wfhok/UjB+ef/pfjsyxurrM5n4qx191w51vfLpypar4oHolmihAZC2lNlRJYC9HTyBVOKnWrJtBie3XmkkgCMqweLU4fs9Rzz/ysytPTep9aj+2Jmez5sKZ8xf9ZluAJJDsUOsoJWUxkJpj1ZKgIoge9YlJBTC9b5Izb0QIhKcK8lNSYoecgSvPOvzeSSm2RcmUUrI/v7pxyq2/fvCB5uZmpYtpK1P+2nHSKgoiYHs79HCWroUlXRLJA6d7IF+YSOmqV0FTYxbllnWVSeP3/ue0Gy/86kjWveVuu4Cki1tCc4AaSN33oqQyMUCxk96zOYtcJHr6JjNQrpTQ0JiCR9lF7oCHFYzqk8Lkoyb+a7/B7GeNwEIDqFaAljBuQ2xdWTj0jnsfnPn6e6vybcUQuVxOVcERuUHg6TE3mz8SIIkhqlVDuhpNqx8CkmolSc2VixUMoH6j9rXBl/bb/cU/3nbF8UyVm8QaonNrz1/zrVlzF92zrRJJtBkB2aUn4yYixVLr5vdkyEesJGMdqh12V3DkcnlUWtvQkEmjWvFUGR2Vv+RtgX52Bf3TVJdLzjKQcvJYtXwNFr/1JkJfoFR2VW0OSSOlUBsaGpSOrBQrurhrM0cnkHEBFBEcWp/rNWvVw+FKhkw6D5OZ8EsFNKQiVFo/DY45bP+n7pz6Hep+U6UZtXntC2bNW/R/2wKkjmYStmfT9lZqbUvm/CT3o92ihGRgCCyt3NPCQlihPEoGfhiCkYtUbkbOCpAxBQy/BDuIYHrAxk/XonnlKpXo79fUCN+rqo8nndi5lQUltah0u3fJ7OwDjyMgpSPjyrWkOpnoQDuVR3tbAbZpwqYK7KBEo3BQaP0UF04546ZrLjrn2m5A3jx3zTdnzl/0220BkkAi8SeyTBsUKiPuChc1kFpfdrEu2vBQiYtSA9xFEASweA4WLFVeEggf1chFQ79GFCplZB0bUbGARnCUV67EqvfeQ4PtwOZUMllWYV4qlVJgakNDTe5aGkk6E11dK5wayK6iMKL7FEEdkzPUvUstfGEA5DJZRMJD4HYg7Qj1OnrXkS9d+/0Lvjpx50FqPkaXRM5f/Y0Z8xbdJ+yscn9UbSStgcr46JKxzkmDYEU5AAANDklEQVQccLogVfFSF4DOmXQB1I2Nib9R3GQswZrk0DmXiFe0FMVTUoQnYNgczGYouCWY+Rz8chUD7CzExg1Y+847MKplZImsLZeQyqYRhJR9oZ4gtVJdW07Jf8pTx8amZ8FpdyBpO+s5RCpOU9PZyIia4NR8wCRCt4SsEyF027Dn6B3/dvU1155Z2zDfCeRP53/y9RkLFv7OTPVDQF1f9MSoIit+jJbOJelmoaTVt7MBveuJJAvubUvVRhnK1aBuMulqJ5pqhwTRcaY2FjxUlWGedDGoIQ9v3Qase/c9mIUispToj6jPJ+kwTnzChFiuibISIiMZAdGDKZKc8u4mvIoXg85hWw7cIFTrIuPlVWiyFRAWm7HfmBEv/PiHF52294imbvVKnR/7k1eXnT9z3jv3m6kBECKJQkxU6QwVoegSlKRxifoEEw2Z9PNvunW6a/pNwzXiOHV3Ajn+ksb1Uc5FzQZSBdQwDdKPVZRWfIrCpyuRooJQ6OwknUc9hFroNVJdzo4Gs5MR6hXICFVqMc7n4bqhKvez7TQKhYLyP8lYlYvtaMimqBwRo3ca+MzNN1x92tiBm3YEd0nkguXnzZj/9gNGegBCof0xKi4iiSQJrAVS+4E6K1c7GOGzAUn1YBpIpe5pdg89NEbF9xFyXKJ15Qq0rfgEKJeQVu0cWveR5FJRaG9HAmjXw+sKX7vOjxRgVd9TVFqhWFQRUSqVhmXYqBYKaMqnUGxbg713H/HS1ddefeyBw5m2bD2Omq294twZC95+yEgNQEAJLOIcedfW1k2XXaQUFUx1HZvezOasZU+pVLlwNS9BU2/UdEKT/8iWpykrWShh/bIPUd6wDinahlRNTK0cjCYb0Lm9h4CbuuG9AUnkEJX1hSoHREaPRk8IX6gJgHnHQqV9A/YcNfT5n1/xo2PHjo3nh20JyJ+8uuKcmfPe/j1LD4AvLX1z1NUQY0QgUt5G7fQ4V9NF428HkHHxJ7mcqujfpAIocvQDpD0P7R9+jMq6tarLP2WbCFT1rSqf0k3zPT39XuVzc29SFBF3bwgP2YYshB8ojpP6boJyG/baZegr59z348PPiP3FLXyS/tFP538yecaChQ8hPdD0KXAni0cdUPHWoeRWzDCq8yVN4euMYOoHslZv6SvrTUFSpg6LMnwRWKUMtLdj45KlMKpV2BRgWAaqRORSjTeRJVRGRt0TWwBvczRacm3DsFRElMo4CMNAjbTJp0yIcgFjdxn2whX3XHt0bdH9VoG8ccGKMx6e9/aDIjsw7ZHlJAtK1jMGknTR5w8k5XT0dSgjGEVC+Yam8OCv34jy6tUINzbDoQo3mgLII9V+QlvaISAJfEXcdmnrBFQiUjZ9aF0wdJIo5PsahrLcbqWIrEXJujbsPLThlWvOu/nLkybVN7eji9id/8kpj8xb+Hs/NyDnkmMs4nmMypOOl0ctFsn2jq22lsrNS6TStd1mPnZZUmVcKDSj6CaiwbIe0lRe4HkoLF+OjR9/hH7E6EQUZgpd300FApSXpvZn5Wwn1F2S7NJg1Qsk5XTIsASVChpzDtzCBuyyQ/9Xpk674JgDhw/v1bD0JpVd7s8LHx79zJJlD7fxTCM55UHFV9RWFAOpjEcNkHpWYzKhdMsEwea2gxo8Ry1wahCd1os5GaGyeg3WvvceGsmZlrogIJmOmLBJtVP+tK7uAlK7T7HKoNSBpbcvSR3tLPo+8Dx1jkGMURAgTb02pVbsMrRpzi3fu+R/xo0bXN4WddsJ5C8XrDjo4XkLn253mhp8I6VADKtU3agXqJgdNdtMG5zPA0j1ucrv5wi8MrIk3c0t2PjBRzCKJaSIiTF0EEDPk67bRS503WYtkJ0AxkCSJSZmiAgNsvTkYJeLHeqVwsr29nYVr1fa1mKXof1e+sWtlx4/bvC2gdil6QH89q01ezz04htvbLTzWddwkEvl4JVc2DGNT01IZOKoDE5Z7q1s7XqfJuk5xzIgwgpYpYKOj5ahvHI1+hqmKoQKDKKztOSrqQZkX+J249prJB4EdSPUbm1SA8RLZtNpVEol1blApdgkneUi+YkNKLZuwK4j+s255bsXbbMkJmvolMg/v1/of/9TL69ZbWUs384g8mkqQIqq4pRDTh1dETnJcf+0mp27BatdD5DKh6S2DtpuTGDDx8tQXvEpchGDTew2GFyji98kVawbo2KKLr5IUoup51R2MUvJGqQQqkhBBL6qH6eGU2KKso6FaqENI4f2ffk3t990wujtGIPYCeT8lTI99eHZG9Y4uRwN0qwWK2hI5yFdPbraM0mpU0IodqBlPOtC7/N6cNvkHFITaRlCulW47a1Y++FH4JUy+jgORJUYcxqA3KXv6AN0jZFuMk2KtrQx24yxic8XgYdcNq1AJMOmWqgr7dhtSJ851131g5O+tHf32Hlbb6hbCH/y7X9f+BHMcX4mB+lHsKUNLjRNVgukTnrF8fh2AEld+01EhTVvwMr330dElbhUWOC7sIhLpIlVSVq1cwAIFd2TlCYTU2lkQndjU7u1LcNQvYTplK0lkcLBFE07qGDsqKEv3XDVt04ev0vf7Srp66Yj6Ztr/7HsJ08s/ejKspXOpqjJyJOwyTozjqoZqdk/VB+usUsm2tNdfDaJpKJ9p1pCxwqKpVcgZxqqPZmSYXY6pdIFVkBSmJDBXZNQ9PwfymH2DmSXox/CNDkc21Q1lWnHVq9DBw+cM/37F2+3JG6iI+mNGWvkjrfNeOa1gpkZbBKQIYNB06Kou5V0FfXlqWybTleqLFs8/zqhz7pzkcmz6g604iOpcVKEqKxchg0ffICsZMoF8UIPlkMRFRCFEg6NF4uze8kkg9Agf1JP8aNex9pDEypxcUJcB0IPxysXkM84KBXbsNOwwa9Mu3HqyV8ase2te5vb8j3YOeC8Gf+a9dbHa0/JNA3mZTcCt3Temqq+aDIoldKpAXERjfuikaz6I0hAVOo1jp2VjY9vim5aVc0Sew2GNA0sKpThBFWsefs1pISnmfWap5BAz2NqPTEoiX7UZTLk2uqUa+LTUqQTkE8lAMsi1aR6h5G3aSxFC0YM6/vq1ddedcKk3Rvqmk1Ur67cBMinWuVet/7ub8+XrNwA3yS23IRHE1Wo8oAmA1CemMYG0KB2TtPEyQixbkAmN62mV1EhfCoF16uq6lk1TyiU4IHAqvcWg7etVU3zZKETF6f2VRMTyRy07q90k+Tv0gMiXkqNgogJaTUhJhTwyhUM7JOjVCp2Gtr3jVt+cvVx++2ar2smUb0gbqIjk1+84eUPr3/yjSU/dnP9eJmlVbOmARsWxaWBBwRV3ZVvmXBpwTQHksLemivTltedGlRXrv1PQwhkaQ6aL7B++SdoWbEcDUzAInKXNJ4qF+z+FxlU138sfZu+cpSrnspC0uH5cUEARUJBCJsD+YyFwsY12GXHAUuuve7y/5m0a79V2wJQveduIpFKV0ppvDR7/qxXl609LswNsqo8AxGYSmfZ1NnFtd9HoV1A+RFqLVYD37qqf3R6lohThtB31Rw1MwjRaHCUNjRj+ZL3kKO/r9Bj9GtPHnNL7I3qqjZNBL5QoxRoi6ep1I9cqqAKx5SodKzHiKF9Ft9507QT9x2ZVvMn/hNHr0DShd6VMvfg3+bcP2/pmhNLVqPj202Qdla5JILSniRhaiZEXCWfuCeq5Fn/VR8qXaGUaYrOq1bQZJrwm1uw6t//hul6sJW5IHqx+zJqwdwyDUZ/zkDPorBpGJ4fQAQBHJtYdB9euQU779C45KfXfP+0g0cPeP8/AWCvVru3C930j9eueWdt21VLm92GipVhLN0AQVFNJGFR3woNgKN0azy5JOEHdc2ULpIidUBOtiwVsHLxEvgtLehj2wirnqokU65ij79jU+/3xACRnqyWymoycUM+A6/YBkRV7DZy4CtTr7v8vAk7Nf1H/j5DLV6blcjak2YvXbn3U2+8d8d7LcVDK3YOgd1IA/tVzlcNxIwb6DR0uj1DSxL12UhE1TIaLQvrPnofGz5ejj6WCdsPlMXtzicmvGL9rxQU0p9fIWY7bRNrHqBcaPEOnjDuiau+fcGle+2c+9z/LkNvAlcXkMkv3vvO8gmvLFr282XNHYeU4YAbKVhx2V6nVNWYHHKVIhqklMtg9UcfYO2yZbBD+tMovmLB7bh0kH5XeT48mZvb+/fJeZ3nxwsLfBcZx6YRiW4uY7532ikn/On7U477xX9yK/f87G0CMvnl59bLQe+vWrvvqubmfQqtG3YIozATBYIIbi8SrGJyo4MbRpFLo90yZLvrlle6G1vXtxfWFRwmeZrnTJuFpiPc/p40d4eBw5iIhoeQjSxCSiAyWSTJhaRSBTXGWE2EVTNAOeXmfJNxLzIM1zazBcu22gcN6rNqt1HDF+69104vjh4w4HP7Gwz1PozPBGS9H/7/03n/BfJzetr/BfJzAvL/AR+hp7arx3WVAAAAAElFTkSuQmCC
  72. // @grant GM_getValue
  73. // @grant GM_setValue
  74. // @grant GM_addStyle
  75. // @grant unsafeWindow
  76. // @grant GM_openInTab
  77. // @grant GM_deleteValue
  78. // @grant GM_xmlhttpRequest
  79. // @grant GM_registerMenuCommand
  80. // @grant GM_addValueChangeListener
  81. // @require https://update.greatest.deepsurf.us/scripts/439099/1203718/MonkeyConfig%20Modern%20Reloaded.js
  82. // @connect api.nocaptchaai.com
  83. // @connect iconcaptcha-solver.vercel.app
  84. // @license MIT
  85. // ==/UserScript==
  86. const cfg = new MonkeyConfig({
  87. menuCommand: true,
  88. params: {
  89. redirectToSocial: {
  90. type: 'checkbox',
  91. label: "Auto-Redirect to Social Media",
  92. default: false,
  93. },
  94. ptcFaucet: {
  95. type: 'checkbox',
  96. label: "Opens PTC links",
  97. default: false
  98. },
  99. apiKey1: {
  100. type: 'text',
  101. label: "noCaptcha Ai API Key",
  102. default: "",
  103. },
  104. apiKey2: {
  105. type: 'text',
  106. label: "IconCaptchas API key",
  107. default: "",
  108. },
  109. siteDelays: {
  110. type: 'text',
  111. long: 3,
  112. label: "Site-Specific Delays (domain:delay)",
  113. default: 'example.com:50ms\nanotherexample.net:100ms'
  114. }
  115. }
  116. });
  117.  
  118. const noop = () => {};
  119. const rawWindow = unsafeWindow;
  120. const currentUrl = location.href;
  121. const queryParams = new URLSearchParams(location.search);
  122.  
  123. function waitForElement(selector, callback = noop) {
  124. const findElement = () => {
  125. if (selector.startsWith("//")) {
  126. return document.evaluate(selector, document, null, 9).singleNodeValue;
  127. }
  128. return document.querySelector(selector);
  129.  
  130. };
  131.  
  132. return new Promise((resolve) => {
  133. const element = findElement();
  134. if (document.contains(element)) {
  135. callback(element);
  136. return resolve(element);
  137. }
  138. const observer = new MutationObserver((mutations, observerInstance) => {
  139. const node = findElement();
  140. if (document.contains(node)) {
  141. observerInstance.disconnect();
  142. callback(node);
  143. resolve(node);
  144. }
  145. });
  146. observer.observe(document.documentElement, {
  147. attributes: true,
  148. childList: true,
  149. subtree: true,
  150. });
  151. });
  152. }
  153.  
  154. function navigateTo(url) {
  155. location = url;
  156. }
  157.  
  158. function waitSeconds(seconds) {
  159. return new Promise((resolve) => setTimeout(resolve, seconds * 1000));
  160. }
  161.  
  162. function redirectToLink(selector) {
  163. waitForElement(selector).then((element) => navigateTo(element.href));
  164. }
  165.  
  166. function imageUrlToBase64(imageUrl) {
  167. if (!imageUrl) {
  168. console.error("No imageUrl provided");
  169. return null;
  170. }
  171. return new Promise((resolve, reject) => {
  172. makeRequest(imageUrl, {
  173. responseType: "blob",
  174. }).then(blob => {
  175. const reader = new FileReader();
  176. reader.onload = () => resolve(reader.result);
  177. reader.onerror = (error) => {
  178. console.error("FileReader error:", error);
  179. reject(error);
  180. };
  181. reader.readAsDataURL(blob);
  182. })
  183. });
  184. }
  185.  
  186. function onMatch(hostPattern, callback, ...args) {
  187. hostPattern = hostPattern.replace("www.", "");
  188. if (hostPattern.length < 3) return;
  189.  
  190. const isMatch = new RegExp(hostPattern).test(location.host);
  191. if (isMatch) callback(...args);
  192. }
  193.  
  194. function onMatchClick(hostPattern, selector) {
  195. onMatch(hostPattern, simulateClick, selector)
  196. }
  197.  
  198. function simulateClick(selector, delay = 0) {
  199. const clickFun = (element) => {
  200. const events = ["mouseover", "mousedown", "mouseup", "click"];
  201. events.forEach((eventName) => {
  202. const event = new MouseEvent(eventName, {
  203. bubbles: true,
  204. });
  205. element.dispatchEvent(event);
  206. });
  207. }
  208. if (typeof selector != "string") {
  209. return clickFun(selector);
  210. }
  211. const selectors = selector.split(", ");
  212. if (selectors.length > 1) {
  213. selectors.forEach((sel) => simulateClick(sel, delay));
  214. return;
  215. }
  216.  
  217. waitForElement(selector, async function(element) {
  218. if (delay > 0) await waitSeconds(delay);
  219. clickFun(element);
  220. });
  221. }
  222.  
  223. function whenCaptchaSolved(callback, onWait = noop) {
  224. let intervalId;
  225. const stopChecking = () => clearInterval(intervalId);
  226.  
  227. // waitForElement("//*[@id='captcha-result'] and normalize-space() = 'Verified!']", function() {
  228. // stopChecking();
  229. // callback();
  230. // })
  231. const checkCaptcha = () => {
  232. try {
  233. const element = document.querySelector('#captcha-result .mb-2.badge.bg-success');
  234. if (element && element.textContent.trim() === 'Verified!') {
  235. stopChecking();
  236. callback();
  237. }
  238.  
  239. const captcha = rawWindow.turnstile || rawWindow.hcaptcha || rawWindow.grecaptcha;
  240. const response = captcha.getResponse();
  241.  
  242. if (response) {
  243. stopChecking();
  244. callback();
  245. }
  246. } catch (error) {
  247. onWait(stopChecking);
  248. }
  249. };
  250.  
  251. checkCaptcha();
  252. intervalId = setInterval(checkCaptcha, 1000);
  253. }
  254.  
  255. function GM_onMessage(label, callback = noop) {
  256. GM_addValueChangeListener("postMessage-" + label, function(name, oldValue, newValue, remote) {
  257. if (remote) {
  258. GM_deleteValue("postMessage-" + label);
  259. callback(newValue);
  260. }
  261. });
  262. }
  263.  
  264. function GM_sendMessage(label, value) {
  265. GM_setValue("postMessage-" + label, value);
  266. }
  267.  
  268. function onOpenTab(callback) {
  269. const originalOpen = rawWindow.open;
  270.  
  271. rawWindow.open = function(...args) {
  272. const newWindow = originalOpen.apply(rawWindow, args);
  273. callback(newWindow);
  274. return newWindow;
  275. };
  276. }
  277.  
  278. function clickWithTrusted() {
  279. // Create window proxy to disable Object.freeze
  280. const sandbox = new Proxy(window, {
  281. get(target, key) {
  282. if (key === 'Object') {
  283. return new Proxy(Object, {
  284. get(objTarget, objKey) {
  285. if (objKey === 'freeze') {
  286. return function(obj) {
  287. console.warn("Object.freeze disabled in sandbox.");
  288. return obj;
  289. };
  290. }
  291. return Reflect.get(objTarget, objKey);
  292. }
  293. });
  294. }
  295. return Reflect.get(target, key);
  296. }
  297. });
  298.  
  299. // Patch addEventListener to clone events and force isTrusted
  300. const originalAddEventListener = EventTarget.prototype.addEventListener;
  301. EventTarget.prototype.addEventListener = function(type, listener, options) {
  302. const wrappedListener = function(event) {
  303. const clonedEvent = Object.create(event);
  304. Object.defineProperty(clonedEvent, "isTrusted", {
  305. value: true,
  306. writable: false
  307. });
  308. return listener.call(this, clonedEvent);
  309. };
  310. return originalAddEventListener.call(this, type, wrappedListener, options);
  311. };
  312.  
  313. return sandbox;
  314. }
  315.  
  316. function isVisible(element) {
  317. if (!element) return false;
  318.  
  319. const style = window.getComputedStyle(element);
  320. const visible = style.display !== 'none' &&
  321. style.visibility !== 'hidden' &&
  322. style.opacity !== '0' &&
  323. element.offsetWidth > 0 &&
  324. element.offsetHeight > 0;
  325.  
  326. if (!visible) return false;
  327.  
  328. return isVisible(element.parentElement) || element.parentElement === null;
  329. };
  330.  
  331. function transformMethod(object, methodName, argumentProcessor) {
  332. const originalMethod = object[methodName];
  333.  
  334. Object.defineProperty(object, methodName, {
  335. value: function (...args) {
  336. const processedArgs = argumentProcessor(args);
  337. return originalMethod(...processedArgs);
  338. },
  339. writable: false,
  340. configurable: false
  341. });
  342. }
  343.  
  344. function makeRequest(url, options = {}) {
  345. return new Promise((resolve, reject) => {
  346. GM_xmlhttpRequest({
  347. url,
  348. method: options.method || "GET",
  349. responseType: options.responseType || "json",
  350. headers: options.headers || {},
  351. data: options.data ? JSON.stringify(options.data) : null,
  352. //timeout: options.timeout || 0,
  353. onload: (response) => resolve(response.response),
  354. onerror: (error) => reject(error),
  355. ontimeout: (error) => reject(error),
  356. onabort: (error) => reject(error)
  357. });
  358. });
  359. }
  360.  
  361. // Main execution
  362. (function () {
  363. "use strict";
  364. //only click
  365. onMatchClick("cutyion.com", "#submit-button:not([disabled])");
  366. onMatchClick("modsfire.com", ".download-button, .download-button[href]");
  367. onMatchClick("aylink.co", ".btn-go, .complete[style*='display: block;'] a, a.btn:not(.btn-go)")
  368. onMatchClick("devnote.in|techyuth.xyz", "#scroll:not(.no), #getlinks[style*='display: block;'], .get-link:not(.disabled)");
  369. onMatchClick("gplinks.co|cricketlegacy.com", "#VerifyBtn[style*='display: block;'], #NextBtn:not([href='#']), #captchaButton:not(.disabled)");
  370. onMatchClick("(financewada|utkarshonlinetest).com|financenova.online|v2links.me", ".get_btn a[href], //div[contains(text(),'Continue')], .get-link:not(.disabled)");
  371. onMatchClick("(wikijankari|idblogmarket|modijiurl|phonesparrow|naamlist|rajasthantopnews).com|gmsrweb.org", "center a[style*='display: block;'], .get-link:not(.disabled)");
  372. cfg.get("redirectToSocial") && onMatchClick("(instagram|youtube|facebook).com", ".-cx-PRIVATE-Linkshim__followLink__, #invalid-token-redirect-goto-site-button, .selected");
  373.  
  374. onMatch("upfion.com", function() {
  375. simulateClick("#link-button:not([disabled])");
  376. redirectToLink("a#link-button:not([disabled])");
  377. });
  378.  
  379. onMatch("(m88(sut|usb)?|bet88li|fb88(dv|vao)?|yeumoney|google|vn8?8(wo|tk1|eu|zx|ko|es|tu|n|my)?|v9bethi).com|188.166.185.213|165.22.63.250|vn88.(hiphop|wtf|id|now|fan|group|solutions|ing)|vn88vc.wiki", function() {
  380. waitForElement(".getcodebtn", function(element) {
  381. element.click();
  382. GM_sendMessage("close_tabs", currentUrl);
  383. })
  384. waitForElement("//*[contains(@class, 'cursor-pointer') and contains(text(), 'footer')]", function() {
  385. simulateClick("a[href*='"+location.host+"']");
  386. })
  387. waitForElement("//*[contains(@class, 'cursor-pointer') and string-length(translate(normalize-space(text()), '0123456789', '')) = 0]", function(element) {
  388. GM_sendMessage("vietnam_code", element.innerText)
  389. })
  390.  
  391. const tabs = [];
  392. const urls = [
  393. "m88.com", "vn88.id", "vn88.fan", "vn88.ing", "fb88.com", "vn88.now",
  394. "vn88.wtf", "vn8eu.com", "vn88n.com", "m88sut.com", "m88usb.com",
  395. "fb88dv.com", "vn88.group", "vn88wo.com", "vn88zx.com", "vn88ko.com",
  396. "vn88es.com", "vn88tu.com", "vn88tk1.com","vn88vc.wiki", "fb88vao.com",
  397. "vn88.hiphop", "vn88.solutions", "bet88li.com/m88", "188.166.185.213/w88",
  398. "165.22.63.250/188bet", "vn88my.com/m88", "v9bethi.com"
  399. ]
  400.  
  401. urls.includes(queryParams.get("q")?.replace("https://", "")) && simulateClick(".mymGo ~ div a");
  402.  
  403. GM_onMessage("vietnam_code", function(newValue) {
  404. tabs.forEach(([_, tab]) => tab.close());
  405. document.querySelector('[name="code"]').value = newValue;
  406. simulateClick(".box-form-button button");
  407. });
  408.  
  409. waitForElement("[data-clipboard-text]:not([data-clipboard-text=''])", function(element) {
  410. const links = urls.filter(url => url.includes(element.dataset.clipboardText));
  411. links.forEach(url => {
  412. const tab = GM_openInTab("https://www.google.com/url?q=https://" + url);
  413. tabs.push([url, tab]);
  414. })
  415. GM_onMessage("close_tabs", function(newValue) {
  416. tabs.forEach(([url, tab]) => {
  417. if (new URL("https://" + url).host !== new URL(newValue).host) {
  418. tab.close();
  419. }
  420. });
  421. });
  422. })
  423. });
  424.  
  425. if (cfg.get("ptcFaucet")) {
  426. const regex = /^(visit for \d+ sec|visit(?: now)?|go|view|view now|view ads?|watch|start .* coins|start view ad)$/i;
  427. const findButton = () => [...document.querySelectorAll("button")].find(btn => regex.test(btn.textContent.trim()));
  428.  
  429. onMatch("ourcoincash.xyz|(bitcotasks|freepayz|gwaher).com", function() {
  430. //TODO: replace the use of setInterval and fix the issue with tabs
  431. let tabObj;
  432. onOpenTab(function(tab) { tabObj = tab; });
  433. rawWindow.addEventListener("beforeunload", function() { tabObj?.close(); })
  434.  
  435. findButton()?.click();
  436.  
  437. setInterval(function() {
  438. tabObj?.close();
  439. findButton()?.click();
  440. }, 120000) // 120 sec
  441. whenCaptchaSolved(function() {
  442. const btn = document.querySelector("button[type='submit']")
  443. isVisible(btn) && btn.click();
  444. })
  445. })
  446. }
  447.  
  448. onMatch("coinclix.co|geekgrove.net", async function() {
  449. // Add support for Google. Currently, it is not supported, and a refresh is needed when it appears.
  450. if (!cfg.get("autoRedirectToSocial")) {
  451. //TODO: Automatically enable for a temporary amount of time
  452. return alert("To bypass this, you need to enable Auto-Redirect to Social Media.");
  453. }
  454. const code = document.querySelector(".mb-2 code");
  455. if (code) {
  456. //TODO: replace with something else
  457. const tab = GM_openInTab(document.querySelector("strong a")?.href);
  458. await waitSeconds(10);
  459. GM_sendMessage("geek_code", code.innerText);
  460.  
  461. }
  462. GM_onMessage("geek_code", function(newValue) {
  463. document.querySelector("#link_input").value = newValue;
  464. simulateClick("#btn_link, .btn-primary[href]");
  465. });
  466. })
  467.  
  468. // Don't forget to add the site into the @match.
  469. const sites = cfg.get("siteDelays").replaceAll("ms", "").split(/\n|:/);
  470. if (location.host in sites) {
  471. const argumentProcessor = (cb, delay, ...args) => ([cb, sites[location.host] * 1000, ...args]);
  472. transformMethod(rawWindow, "setInterval", argumentProcessor);
  473. transformMethod(rawWindow, "setTimeout", argumentProcessor);
  474. }
  475. })();
  476. // There are several known bugs, so if possible, it is recommended to use the official chrome extensions for now.
  477. (async function(isEnabled) {
  478. if (!isEnabled) return;
  479.  
  480. let isSolved = false;
  481.  
  482. const isCheckboxPresent = () => !!document.querySelector('.recaptcha-checkbox');
  483. const isCheckboxChecked = () => document.querySelector('#recaptcha-anchor')?.getAttribute('aria-checked') === 'true';
  484. const isImageChallengePresent = () => !!document.querySelector('#rc-imageselect');
  485. const isGrid4x4 = () => document.querySelectorAll('.rc-imageselect-tile').length === 16;
  486. const isGrid3x3 = () => document.querySelectorAll('.rc-imageselect-tile').length === 9;
  487. const getChallengeData = () => {
  488. const target = document.querySelector('.rc-imageselect-instructions strong')?.innerText;
  489. const imageUrl = document.querySelector('.rc-image-tile-33, .rc-image-tile-44')?.src;
  490. return [target, imageUrl];
  491. };
  492.  
  493. const solveImageChallenge = async (target, imageUrl, gridType) => {
  494. return new Promise(async (resolve, reject) => {
  495. const response = await makeRequest("https://api.nocaptchaai.com/createTask", {
  496. method: 'POST',
  497. headers: {
  498. 'Content-Type': 'application/json',
  499. },
  500. data: {
  501. clientKey: cfg.get('apiKey1'),
  502. task: {
  503. type: 'ReCaptchaV2Classification',
  504. questionType: gridType,
  505. image: (await imageUrlToBase64(imageUrl)).replace("data:image/jpeg;base64,", ""),
  506. question: target
  507. }
  508. }
  509. })
  510.  
  511. if (response.errorId) reject(response);
  512. const solution = response.solution;
  513. resolve(solution?.objects || solution?.hasObject);
  514. });
  515. };
  516.  
  517. const hasError = () => {
  518. const errorElements = document.querySelectorAll('[class^="rc-imageselect-error-"]');
  519. return Array.from(errorElements).some(isVisible);
  520. };
  521.  
  522. while (!isSolved) {
  523. await waitSeconds(2);
  524. if (isCheckboxPresent()) {
  525. if (isCheckboxChecked()) {
  526. isSolved = true;
  527. return;
  528. }
  529. await simulateClick('#recaptcha-anchor');
  530. } else if (isImageChallengePresent()) {
  531. const gridType = isGrid4x4() ? "44" : isGrid3x3() ? "33" : null;
  532. if (gridType && isImageChallengePresent() && !isCheckboxChecked()) {
  533. const [target, imageUrl] = getChallengeData();
  534. if (target && imageUrl) {
  535. const solution = await solveImageChallenge(target, imageUrl, gridType);
  536. if (solution) {
  537. const tiles = document.querySelectorAll('.rc-image-tile-wrapper');
  538. for (const index of solution) {
  539. if (tiles[index]) {
  540. simulateClick(tiles[index]);
  541. await waitSeconds(0.4);
  542. }
  543. }
  544. await waitSeconds(1);
  545. await simulateClick("#recaptcha-verify-button");
  546.  
  547. if (isCheckboxChecked()) {
  548. isSolved = true;
  549. await waitSeconds(1);
  550. return;
  551. }
  552. }
  553. }
  554. }
  555. } else if (isCheckboxChecked()) {
  556. isSolved = true;
  557. await waitSeconds(1);
  558. return;
  559. }
  560.  
  561. if (hasError()) {
  562. simulateClick("#recaptcha-reload-button");
  563. await waitSeconds(1);
  564. }
  565. }
  566. })(cfg.get("apiKey1").length > 20);
  567.  
  568. (async function(isEnabled) {
  569. if (!isEnabled) return;
  570. await waitForElement('.iconcaptcha-holder');
  571. const OriginalImage = rawWindow.Image;
  572. rawWindow.Image = function(width, height) {
  573. const img = new OriginalImage(width, height);
  574.  
  575. img.addEventListener('load', () => {
  576. try {
  577. const canvas = document.createElement('canvas');
  578. canvas.width = img.naturalWidth;
  579. canvas.height = img.naturalHeight;
  580. const ctx = canvas.getContext('2d');
  581. ctx.drawImage(img, 0, 0);
  582. solve(canvas.toDataURL())
  583. } catch (err) {
  584. console.warn('Could not convert image to base64:', err);
  585. }
  586. });
  587. return img;
  588.  
  589. }
  590.  
  591. rawWindow.Image.prototype = OriginalImage.prototype;
  592. const element = await waitForElement(".iconcaptcha-modal__body-icons");
  593. await waitSeconds(0.5);
  594.  
  595. if (element.tagName === "canvas") solve(element.toDataURL());
  596. async function solve(base64Image) {
  597. base64Image = base64Image.replace("data:image/png;base64,", "");
  598. console.log(base64Image);
  599.  
  600. const response = await makeRequest("https://iconcaptcha-solver.vercel.app/api/v2/solve", {
  601. method: "POST",
  602. headers: {
  603. 'Content-Type': 'application/json',
  604. },
  605. data: {
  606. token: cfg.get("apiKey2").trim(),
  607. image: base64Image
  608. }
  609. });
  610.  
  611. console.log(response);
  612. const captchaBox = document.querySelector(".iconcaptcha-modal__body-selection > i");
  613.  
  614. const rect = element.getBoundingClientRect();
  615. const clientX = rect.left + response.center_x;
  616. const clientY = rect.top + response.center_y;
  617.  
  618. console.log("Click inside canvas at:", { clientX, clientY });
  619.  
  620. // Visual marker
  621. const marker = document.createElement("div");
  622. marker.style.position = "fixed";
  623. marker.style.left = `${clientX - 5}px`;
  624. marker.style.top = `${clientY - 5}px`;
  625. marker.style.width = "10px";
  626. marker.style.height = "10px";
  627. marker.style.backgroundColor = "red";
  628. marker.style.borderRadius = "50%";
  629. marker.style.zIndex = "9999";
  630. marker.style.pointerEvents = "none";
  631. document.body.appendChild(marker);
  632.  
  633. setTimeout(() => marker.remove(), 1000);
  634.  
  635. ["mouseenter", "mousemove", "mousedown", "mouseup", "click"].forEach(type => {
  636. captchaBox.dispatchEvent(new MouseEvent(type, {
  637. bubbles: true,
  638. cancelable: true,
  639. view: rawWindow,
  640. clientX,
  641. clientY,
  642. pageX: clientX + rawWindow.scrollX,
  643. pageY: clientY + rawWindow.scrollY
  644. }));
  645. });
  646. }
  647. })(cfg.get("apiKey2").length > 5);