// ==UserScript== // @name Handy Image // @version 2026.01.09 // @author Owyn // @contributor ubless607, bitst0rm // @namespace handyimage // @description Shows just fullsize Image with hotkeys & without pop-ups on many image-hosting sites // @updateURL https://github.com/Owyn/HandyImage/raw/master/HandyImage.user.js // @downloadURL https://github.com/Owyn/HandyImage/raw/master/HandyImage.user.js // @homepage https://github.com/Owyn/HandyImage // @supportURL https://github.com/Owyn/HandyImage/issues // @icon https://i.ibb.co/Xk4vsrTT/Handy.png // @run-at document-start // @grant GM.getValue // @grant GM.setValue // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_getValue // @grant GM_setValue // @grant GM_download // @grant GM_addElement // @grant unsafeWindow // @sandbox JavaScript // @compatible Chrome // @compatible Firefox // @match https://www.imagebam.com/image/* // @match https://www.imagebam.com/view/* // @match http://imgchili.net/show* // @match *://imgbox.com/* // @match *://*.imagetwist.com/* // @match *://imagexport.com/* // @match https://*.imagevenue.com/* // @match *://*.imageshack.com/i/* // @match *://*.imageshack.com/f/* // @match *://*.image2you.ru/*/*/ // @exclude *://image2you.ru/cabinet/* // @exclude *://www.image2you.ru/cabinet/* // @match https://imageban.ru/show* // @match *://fastpic.ru/view* // @match *://fastpic.ru/fullview* // @match https://fastpic.org/view/* // @match https://fastpic.org/fullview/* // @match *://pixhost.to/show/* // @match http://*.picpicture.com/image/* // @match http://*.pic5you.ru/*/*/ // @match http://*.tinypic.com/view* // @match http://radical-foto.ru/* // @match http://radikal-foto.ru/* // @match https://radikal.ru/* // @exclude https://radikal.ru/video/* // @match http://f-page.ru/* // @match http://f-picture.net/* // @match https://*.pimpandhost.com/image* // @match https://*.pixroute.com/*/* // @match https://*.picforall.ru/*/*/ // @match *://*.imagecurl.com/view* // @match *://*.imagecurl.org/view* // @match http://*.euro-pic.eu/*share* // @match http://*.xxxhost.me/view* // @match http://*.imadul.com/?* // @match *://postimg.org/image/* // @match *://postimg.cc/* // @match http://*.niceimage.pl/*.html // @match http://*.pics-money.ru/* // @match http://*.freeimgup.com/*.* // @match http://imgtiger.com/view* // @match https://*.imgspice.com/*/* // @match http://*.picage.ru/*/* // @match http://*.imgserve.net/img* // @match http://*.images-host.biz/*/* // @match http://*.imgfantasy.com/* // @match http://*.platimzafoto.ru/full/ // @match http://*.platimzafoto.ru/*.html // @match http://imgdino.com/view* // @match http://*.pic-money.ru/*.html // @match http://*.pic-money.ru/full/ // @match http://*.imgcandy.net/img* // @match http://*.imagefolks.com/img* // @match *://*.pzy.be/v* // @match https://www.turboimagehost.com/p* // @match http://*.subirimagenes.com/*.html // @match http://*.screenlist.ru/details.php?image_id=* // @match http://qrrro.com/images* // @match http://imgmade.com/images* // @match http://www.pic-upload.de/view* // @match http://picshare.geenza.com/pics* // @match https://www.imgbabes.com/*/*.htm* // @match http://ibunker.us/f* // @match http://ichan.org/image.php?path=* // @match http://*.imagearn.com/* // @match http://www.dumppix.com/view* // @match http://www.bilder-upload.eu/show* // @match http://www.bilder-hochladen.net/file* // @match http://www.bild.me/bild.php?* // @match *://www.imagesnake.com/show* // @match *://www.imagesnake.com/img* // @match *://www.imagesnake.com/view* // @match http://www.imagesnake.org/show* // @match http://www.imagesnake.org/img* // @match http://www.imagesnake.org/view* // @match https://www.freebunker.com/show* // @match https://www.freebunker.com/img* // @match https://www.freebunker.com/view* // @match http://bayimg.com/* // @match http://*.directupload.net/file* // @match http://*.imagecherry.com/* // @match https://funkyimg.com/view* // @match http://*.abload.de/image.php?* // @match http://*.picfox.org/share* // @match http://*.pixup.us/img-* // @match http://*.imagecarry.com/*/* // @match http://*.imagedunk.com/*/* // @match http://*.imageswitch.com/*/* // @match http://*.piclambo.net/*/* // @match http://*.picleet.com/*/* // @match http://*.yankoimages.net/*/* // @match http://*.picturedip.com/*/* // @match https://*.imagedecode.com/img-* // @match https://*.imagefruit.com/img* // @match https://*.imagefruit.com/show* // @match https://*.miragepics.com/view* // @match http://*.freeimagehosting.net/* // @match http://*.keptarolo.hu/* // @match http://www.uploadhouse.com/view* // @match http://*.dumpt.com/img/view* // @match http://imagezilla.net/show/* // @match https://*.imageup.ru/img* // @match http://*.casimages.com/photos/*/*/* // @match http://*.casimages.com/img* // @match http://*.cyberpics.net/p* // @match *://vvcap.com/* // @match https://*.freeimage.us/share* // @match http://*.pix-x.net/*/* // @match http://*.shareimages.com/image* // @match http://www.xtremeshack.com/image/* // @match http://*.mrjh.org/gallery.php?entry=* // @match http://*.itmages.ru/image/view* // @match http://shrani.najdi.si/* // @match http://*.iv.pl/view* // @match http://*.image18.org/show/* // @match http://*.pic4you.ru/* // @match http://picload.org/view* // @match http://*.thebestpichost.com/picture/* // @match *://*.lostpic.net/image/* // @match http://subefotos.com/ver/* // @exclude http://subefotos.com/ver/*#codigos // @match http://*.pixsor.com/share* // @match http://*.pixsor.com/XXX/share* // @match http://*.image-share.com/i*html // @match http://*.npicture.net/share-* // @match http://*.overpic.net/view* // @match http://*.imagecross.com/* // @match http://*.mojoimage.com/* // @match http://www.use.com/* // @match http://www.hostingpics.net/view* // @match http://*.pictureshoster.com/view* // @match http://*.imageshost.ru/photo* // @match http://*.imagestime.com/show* // @match http://sharenxs.com/view* // @match http://sharenxs.com/gallery/*/* // @match http://img4.imagetitan.com/img* // @match *://*.imagenpic.com/* // @match http://*.stuffed.ru/images* // @match http://*.wstaw.org/w/* // @match http://www.imagesocket.com/photos* // @match http://www.imagesocket.com/social* // @match http://imageban.net/show* // @match http://*.otofotki.pl/* // @match http://*.imgsin.com/view* // @match http://*.imagenetz.de/* // @match http://pix.toile-libre.org/?img* // @match *://servimg.com/view/* // @match http://*.upix.me/files/* // @match http://*.upix.me/i/v/?q=* // @match http://*.pixelup.net/image* // @match http://*.pixelup.net/image* // @match http://*.picsee.net/* // @match http://www.fotosik.pl/pokaz_obrazek/pelny* // @match https://*.depic.me/* // @match http://www.xup.in/dl* // @match http://*.hotchyx.com/d* // @match http://*.imageupper.com/i/* // @match *://beeimg.com/view* // @match http://www.noelshack.com/*.* // @match http://www.turbopix.fr/v/* // @match http://thumbsnap.com/* // @match http://deffe.com/image/* // @match http://*.imageno.com/*.html // @match http://*.imagehousing.com/image* // @match http://www.picfront.org/d/* // @match http://*.imagehost.thasnasty.com/?* // @match http://*.imagilive.com/*.htm* // @match http://*.picturevip.com/* // @exclude http://*.picturevip.com/x/clean/ // @match http://img.3ezy.net/*.htm // @match http://*.xximg.net/img-* // @match http://*.zaslike.com/view* // @match http://www.zimagez.com/zimage* // @match http://*.pictureturn.com/*.html // @match http://*.cubeupload.com/im/* // @match http://www.photo-host.org/view-image/* // @match http://www.fotoszok.pl/show* // @match http://*.imglink.ru/show* // @match http://zapodaj.net/*.html // @match http://www.pixic.ru/view* // @match http://www.imagesup.de/picture.php?code=* // @match https://www.pornbus.org/show* // @match http://www.bilder-space.de/bild-* // @match *://www.imgcarry.com/show* // @match http://*.saveimg.ru/show* // @match http://www.fotos-hochladen.net/view* // @match http://simplest-image-hosting.net/* // @match http://jpegbay.com/gallery/*.html // @match https://www.hostpic.org/view* // @match *://imagik.fr/image/* // @match http://www.image-load.net/show* // @match http://*.sxpics.nl/img-* // @match http://*.gallerycloud.net/image/* // @match http://tryimg.com/image/* // @match http://bilder.nixhelp.de/display-* // @match http://*.funextra.hostzi.com/view* // @match http://*.freakimage.com/view* // @match http://*.fotoo.pl/show.php?img=*.html // @match http://*.rapid-img.de/img.php?f=* // @match http://*.upload.djmaster.fr/?v=* // @match http://img.pereslavl.ru/share* // @match http://*.dwimg.com/view* // @match http://www.imageurlhost.com/view* // @match http://*.imagesup.net/* // @match http://*.superkipje.com/view* // @match https://*.2i.sk/i/* // @match https://imgadult.com/img-* // @match http://imagebic.com/?v=* // @match http://www.picshot.pl/public/view* // @match http://*.imagesmax.de/display-* // @match http://*.ifotos.pl/zobacz/* // @match http://www.zimage.fr/photo.php?id=* // @match http://www.zimage.fr/taillereel.php?id=* // @match http://ngarko.online.fr/view* // @match http://*.b4he.com/?v=* // @match http://*.oxily.com/?* // @match http://ghanaimages.co/?* // @match http://*.imgplus.info/view* // @match http://firepic.org/?v=* // @match http://savepic.org/*.htm // @match http://*.fastimages.ru/p* // @match http://ipic.su/?page=img&pic=* // @match http://*.jpegshare.net/*.html // @match http://*.overdream.cz/* // @match http://*.fastpics.net/?v=* // @match http://www.ii4.ru/image-* // @match http://*.picuploader.de/* // @match http://*.rupict.ru/share* // @match http://bildr.no/view* // @match http://www.subeimagenes.com/img* // @match http://screenshot.ru/* // @match http://*.hostpix.de/show.php?img* // @match http://*.freeuploadimages.org/view* // @match http://smages.com/?v=* // @match https://*.hostingkartinok.com/show-image.php?id=* // @match http://*.4put.ru/*max* // @match http://www.pictureshack.ru/view* // @match http://*.host99.byethost4.com/share.php?id=* // @match http://*.eazypics.net/share* // @match http://xtupload.com/share.php?id=* // @match http://t.williamgates.net/share* // @match *://photosex.biz/v.php?id=* // @match http://*.imageteam.org/img-* // @match http://*.hostimage.ru/photo* // @match http://www.loaditup.de/*.html // @match http://*.imgbox.de/show/img* // @match http://*.picszone.net/view* // @match http://*.images.share-films.net/view* // @match http://www.uploadking.biz/show* // @match http://foto.xhost.lv/show.php?img=* // @match http://*.imagefile.org/view* // @match http://*.onimage.net/show* // @match http://*.uploadagent.de/show* // @match http://*.bildjunkies.de/view* // @match http://*.foto.hcfor.pl/view* // @match http://*.pic.tooptarinha.com/view* // @match http://*.poopr.org/view* // @match http://*.xp-images.hi2.ro/view* // @match http://*.dayzeddesigns.com/view* // @match http://*.freeimghosting.co.uk/view* // @match http://*.123poze.3x.ro/view* // @match http://*.upload.removed.us/view* // @match http://*.ximg.co.uk/view* // @match http://sl-images.ath.cx/view* // @match http://*.picatom.com/* // @match https://*.picshare.ru/image/* // @match http://*.imghost.pl/index.php?id=* // @match http://*.udostepniaj.pl/view* // @match http://*.hosting-zdjec.pl/view* // @match http://*.zapisz.net/view* // @match http://www.imagehosting.cz/?v=* // @match http://www.dumparump.com/view* // @match http://*.myxpic.com/showpic* // @match http://*.picness.com/image/* // @match http://h4z.it/View* // @match http://*.freeamateurteens.net/view* // @match http://*.fotoshack.us/foto* // @match https://*.imagebin.ca/v/* // @match http://*.loadpix.de/*.html // @match http://www.public-pic.de/image/show/* // @match http://*.9foto.ru/photo/* // @match http://uploads.ru/* // @match http://*.storepic.com/show* // @match http://www.myimg.de/?img=* // @match http://*.root-space.eu/file* // @match http://*.hot-file.org/p* // @match http://*.hostarea.de/show* // @match http://mepic.ru/view/?id=* // @match http://*.upislam.com/view* // @match http://*.ngarko.free.fr/view* // @match http://*.add-screen.com/view* // @match http://image.siroro.co.uk/p* // @match http://thaisharing.online.fr/view* // @match http://*.images.collectiontricks.it/view* // @match http://*.my-collection.ru/view* // @match http://img.schattorie.nl/view* // @match http://*.forexrainbow.com/view* // @match http://*.imgupload.pl/view* // @match http://*.1y9y.com/view* // @match http://*.addpix.net/view* // @match http://www.myuploadedimages.com/view* // @match http://multihoster.saxonia-fighter.de/view* // @match http://knecht.novarata.net/?* // @match http://*.img.irandeliver.com/?* // @match http://*.xferz.com/?* // @match http://*.up.kfesfahan.com/?* // @match http://upload.khontai.com/?* // @match http://*.image.pantyhosemania.info/?* // @match http://*.addyourpics.com/image* // @match http://*.imgnext.com/img-* // @match http://*.qattach.com/p* // @match http://*.host4images.com/view* // @match http://*.imgbank.cz/* // @match http://*.nyanimg.com/* // @match http://*.geekpics.in/* // @match http://*.imagesloading.altervista.org/?* // @match http://*.showmyimage.com/* // @match http://*.phpbbmods.it/immaggini* // @match http://upload.supreme-elite.fr/?* // @match http://*.fotohelp.kz/image* // @match https://*.myimg.me/* // @match http://*.heberg-hush.org/?* // @match http://*.oltaciyukle.com/* // @match http://*.pichost.name/* // @match *://*.fsfiles.org/flightsimshotsv2/image/* // @match http://*.imagend.com/* // @match http://*.imagerocket.com/* // @match http://*.hyyathost.com/* // @match http://images.reptilescanada.com/* // @match http://*.lakhdaria.net/imagebank/?* // @match http://*.webjardiner.com/hebergement_images_photos/image* // @match http://*.intergranada.com/images/?* // @match http://*.partizansk.eu/foto/image* // @match http://*.xenopix.com/?* // @match http://*.wepic.ru/* // @match http://*.imgup.com/images* // @match http://*.picturepush.com/public* // @match http://*.upload-image.fr/* // @match http://*.iezz.com/?* // @match https://*.images.baconbits.org/?* // @match http://*.upanh.ovo.vn/* // @match http://*.wrzucaj.net/* // @match http://*.heberge-images.com/?* // @match http://www.image.kg/* // @match http://*.savemyimage.com/* // @match http://*.img.dramacafe.tv/* // @match http://*.hosturimage.com/img-* // @match http://*.pic-mir.ru/*/* // @match http://*.244pix.com/view* // @match http://*.uploadimage.ro/view* // @match https://*.imgflare.com/*/* // @match https://www.imagefap.com/photo/* // @match https://www.imagefap.com/video.php?vid=* // @match http://filefap.com/view* // @match https://imgur.com/* // @match https://m.imgur.com/* // @exclude https://imgur.com/a/* // @exclude https://m.imgur.com/a/* // @match https://motherless.com/* // @match https://*.tumblr.com/image/* // @match https://*.media.tumblr.com/*.* // @match http://*.imageporter.com/* // @match http://*.damimage.com/img-* // @match https://fapping.empornium.sx/image/* // @match http://imgboxxx.com/view* // @match http://*.imghere.net/view* // @match http://*.sharepic.biz/show-image.php?id=* // @match http://f-lite.ru/* // @match http://*.picturescream.com/* // @match http://*.imgdone.com/view* // @match https://*.2i.cz/i/* // @match http://awesomescreenshot.com/* // @match https://www.flickr.com/photos/*/*/* // @exclude https://www.flickr.com/photos/*/galleries/* // @exclude https://www.flickr.com/photos/*/albums/* // @exclude https://www.flickr.com/photos/sets/* // @exclude https://www.flickr.com/photos/tags/* // @exclude https://www.flickr.com/photos/page* // @exclude https://www.flickr.com/photos/with* // @exclude https://www.flickr.com/photos*favorites* // @match http://www.amateri.cz/g*/* // @match *://*.wikipedia.org/wiki/*:*.jp* // @match *://*.wikipedia.org/wiki/*:*.png // @match *://*.wikimedia.org/wiki/*:*.jp* // @match *://*.wikimedia.org/wiki/*:*.pn* // @match *://*.xxxscreens.com/img-* // @match http://avenuexxx.com/*-* // @match http://avenuexxx.com/archives/*/* // @exclude http://avenuexxx.com/archives/category/* // @match http://www.bilderhoster.net/*.html // @match http://*.xxxscreens.com/img-* // @match http://*.imgdope.com/view* // @match http://*.imagehost.eu/* // @match http://*.aveimage.com/view* // @match *://*.fappic.com/* // @match http://*.imagenimage.com/*/* // @match http://*.adultur.com/img-* // @match https://*.imageshimage.com/*/* // @match http://*.imgswift.com/*/* // @match http://*.imageporn.eu/?v=* // @match https://*.500px.com/photo/* // @match http://*.greenpiccs.com/images/*.html // @match http://*.hostmat.eu/view* // @match http://*.photobucket.com/user/*/media/*.htm* // @match https://www.imgshots.com/img* // @match https://www.imgshots.com/show/* // @match https://*.3xplanet.com/view* // @match https://*.3xplanet.net/view* // @match http://*.imgmega.com/*.html // @match *://img.yt/img-* // @match http://*.payforpic.ru/*/*/ // @match http://*.keep4u.ru/full/* // @match http://*.pic.re/*.html // @match http://*.freshpics.ru/*/*/ // @match *://*.imgseeds.com/img-* // @match https://*.pronpic.org/*/* // @match https://prnt.sc/* // @match http://*.imgdream.net/view* // @match http://*.imgtab.net/* // @match http://*.kephost.com/image/* // @match http://i.ruspotting.net/image/* // @match https://*.gifyu.com/image/* // @match http://celebimg.com/image/* // @match http://*.sharepic.org/image/* // @match http://*.zuly.de/image/* // @match http://upload.vstanced.com/image/* // @match http://*.thro.bz/image/* // @match http://*.qoou.net/image/* // @match http://brightpic.tk/image/* // @match http://*.cweb-pix.com/image/* // @match http://hosting.webspell.fr/image/* // @match http://*.i-pict.ru/image/* // @match http://*.images.woh.to/image/* // @match http://*.imghaze.com/image/* // @match http://*.imgup.nl/image/* // @match http://*.nium.co/image/* // @match http://pix.hostux.net/image/* // @match http://*.pixoload.de/image/* // @match http://*.primeimg.co/image/* // @match http://pic.xtream-reallife.de/image/* // @match http://*.ultraimg.com/image/* // @match http://demo.chevereto.com/image/* // @match *://imgclick.net/*/* // @match http://*.gogoimage.org/img-* // @match http://imgmoney.ru/*.html // @match http://imgmoney.ru/full/ // @match http://*.imglooks.com/img-* // @match http://*.you-logo.ru/show* // @match http://*.uploadimagex.com/view* // @match http://*.powerlogo.ru/show* // @match http://youpicture.org/?v=* // @match http://*.all-poster.ru/?v=* // @match http://*.picbug.ru/share* // @match http://*.sxpix.nl/img-* // @match http://*.hotflick.net/u/v/?q=* // @match http://*.hotflick.net/f/v/?q=* // @match http://vavvi.com/images/*.html // @match https://www.deviantart.com/*/art/* // @match http://*.myceleb.net/u/v/?q=* // @match http://*.imageblinks.com/img-* // @match *://*.gelbooru.com/index.php?page=post&s=view&id=* // @match *://*.youhate.us/index.php?page=post&s=view&id=* // @match https://safebooru.org/index.php?page=post&s=view&id=* // @match https://hypnohub.net/index.php?page=post&s=view&id=* // @match https://danbooru.donmai.us/posts/* // @match http://konachan.com/post/show/* // @match http://konachan.net/post/show/* // @match https://yande.re/post/show/* // @match https://chan.sankakucomplex.com/*posts/* // @match https://idol.sankakucomplex.com/*posts/* // @match https://yande.re/post/show/* // @match http://www.zerochan.net/* // @match http://imgzap.com/view* // @match http://*.olivepix.com/view/* // @match http://*.ocaload.com/img-* // @match http://*.imghit.com/img-* // @match http://*.imageon.org/img-* // @match http://*.imgcentral.com/view* // @match http://*.chronos.to/* // @match http://picspornfree.me/img-* // @match http://*.pic-you.com/p* // @match http://*.image-bugs.com/*mage/* // @match https://*.imgdrive.net/img-* // @match https://www.pixiv.net/*/artworks/* // @match http://*.scrin.org/?v=* // @match http://*.thumbnailus.com/img-* // @match http://*.nimplus.com/img-* // @match https://*.imgtaxi.com/img-* // @match http://*.imgstudio.org/img-* // @match http://goimge.com/img-* // @match http://*.safeimage.biz/image/* // @match http://*.imgbase.online/*/*/ // @match http://*.picpays.ru/*/*/ // @match http://*.imgclover.com/image/* // @match *://*.imgking.co/img* // @match http://ask.fm/*/photo/original // @match http://*.newimagepost.com/img-* // @match http://*.imageho.me/img-* // @match http://myimg.club/* // @match https://www.hotimage.uk/*mg-* // @match http://*.10.imageleon.com/i-* // @match https://www.dropbox.com/s/*/* // @match http://imgor.net/img-* // @match http://*.imagedax.net/*/*.html // @match https://*.imgmonkey.com/*/*.html // @match http://*.fapat.me/img-* // @match http://photo.weibo.com/*/large/photo_id/* // @match https://*.crazyimg.com/images/*.html // @match http://imgbe.com/img-* // @match https://*.imgextra.uk/image/* // @match http://*.extraimago.com/image/* // @match http://*.fireimg.cc/img-* // @match http://www.pornimagex.com/image/* // @match http://*.imgboom.net/* // @match http://*.img24.org/*.html // @match http://*.img24.org/full/ // @match http://*.pic-maniac.com/* // @match https://*.instagram.com/p/* // @match https://*.instagram.com/*/p/* // @exclude https://instagram.com/p/*/embed/* // @exclude https://*.instagram.com/p/*/embed/* // @match http://*.imgsay.com/?v=* // @match http://*.imgsmile.com/?v=* // @match http://*.balkanelite.org/MultiHoster/view* // @match https://*.x.com/*/photo/* // @match http://*.icezap.com/img-* // @match *://*.rapidimg.net/img-* // @match http://*.imgtornado.com/img-* // @match http://*.daily-img.com/image/* // @match http://*.imageab.com/image/* // @match http://*.erimge.com/img-* // @match http://*.imgtrial.com/img-* // @match https://imgtown.net/*.php // @match http://ameblo.jp/*/image-* // @match http://*.loftlm.ru/img-* // @match http://*.imgdragon.com/*/*.html // @match http://ftop.ru/*/* // @match http://*.imgurx.net/share* // @match http://savepic.ru/*.htm // @match http://*.imgmaid.net/* // @match http://*.imggold.org/*/*.html // @match http://*.imgcredit.xyz/img-* // @match http://*.imgcredit.xyz/p/img-* // @match http://*.imgcredit.xyz/image/* // @match http://*.dimtus.com/img-* // @match http://*.coreimg.net/* // @match http://sfwimg.com/image/* // @match http://*.img3x.com/image/* // @match http://*.imguniversal.com/* // @match http://*.imagepearl.com/view/* // @match http://*.imagepearl.com/verify/* // @match http://*.tinizo.com/img-* // @match *://*.imgkings.com/img* // @match http://*.imagerar.com/img* // @match http://*.sendpic.org/view/* // @match *://www.porncomix.info/*/*/ // @exclude *://www.porncomix.info/gallery/* // @exclude *://www.porncomix.info/artist/* // @match *://*.picclock.ru/*/*/ // @match http://*.svetmonet.ru/*.html // @match http://*.svetmonet.ru/full/ // @match http://*.imgpix.net/* // @match http://*.freeimagehostin.com/img-* // @match http://www.mixbase.net/gallery/image.* // @match https://www.adultimages.xyz/*/image*.html // @match http://*.pic4share.ru/*.html // @match http://*.pic4share.ru/full/ // @match http://*.sximg.nl/img-* // @match http://*.0img.net/?v=* // @match https://ss.movierls.net/image/* // @match http://www.xxximagetpb.org/image/* // @match http://www.pixsense.net/site/v/* // @match http://www.imgsky.net/* // @match http://www.imagespicy.site/site/v/* // @match https://outletpic.com/*.php // @match http://*.pix.ac/image/* // @match *://*.imgmak.com/image/* // @match http://*.freephotohostin.com/img-* // @match http://*.imgcat.pw/img-* // @match http://*.levinpic.org/*.html // @match https://www.sparrowpics.com/image/* // @match http://*.imgmax.com/image/* // @match https://lostpix.com/?v=* // @match https://extraimago.com/image/* // @match http://www.joblo.com/hollywood-celebrities/hottie-profile/*/image-gallery/*.jpg // @match *://extraimage.net/image/ // @match *://www.bellazon.com/main/attachment/* // @match *://extraimage.net/image/* // @match https://www.artstation.com/artwork/* // @match http://bcy.net/illust/detail/* // @match http://*.imgpics.nl/img-* // @match http://*.imagexxx18.com/image/* // @match http://*.imagepics.xyz/img-* // @match *://postto.me/* // @match http://*.imgskull.xyz/image/* // @match http://*.imgskull.com/image/* // @match *://*.ninjaimages.com/*.html // @match *://*.imgprime.com/img* // @match *://*.piccash.net/*/*/ // @exclude *://piccash.net/cabinets/* // @exclude *://www.piccash.net/cabinets/* // @match http://imgwo.com/img-* // @match http://luxpic.ru/images/*.html // @match http://*.pic-images.ru/full/ // @match http://*.pic-images.ru/*.html // @match http://*.imgspic.ru/full/ // @match http://*.imgspic.ru/*.html // @match http://imgleveret.com/img-* // @match http://porn84.org/img-* // @match https://*.ima.gy/i/* // @match http://picpower.ru/full/ // @match http://picpower.ru/*.html // @match http://piccloud.ru/full/ // @match http://piccloud.ru/*.html // @match https://imgbase.ru/*/*/ // @match http://*.sexybabepics.net/img-*.html // @match http://*.sexybabepics.net/x/image/* // @match http://*.imagecrest.com/verify/* // @match http://*.imagecrest.com/view/* // @match https://*.picz.site/img-*.html // @match http://*.allxpix.com/img-*.html // @match http://pixxsees.ru/full/ // @match http://pixxsees.ru/*.html // @match http://imgblank.com/img-*.html // @match http://imgtrex.com/*/* // @match https://imgwallet.com/img-*.html // @match http://2picsun.ru/full/ // @match http://2picsun.ru/*.html // @match http://picpie.org/image/* // @match *://*.xeimg.yt/img-*.html // @match *://*.imagedisco.net/?v=* // @match http://*.imgmain.com/img-*.html // @match http://*.imgvisits.com/* // @match *://pixxxels.org/image/* // @match http://img-pika.ru/full/ // @match http://img-pika.ru/*.html // @match http://imgcach.ru/*/*/ // @match https://*.xhamster19.com/photos/gallery/*/* // @match https://*.xhamster11.com/photos/gallery/*/* // @match https://*.xhamster4.com/photos/gallery/*/* // @match https://*.xhamster3.com/photos/gallery/*/* // @match https://*.xhamster.com/photos/gallery/*/* // @match https://*.xhamster.desi/photos/gallery/*/* // @exclude /^https://(.*\.)?xhamster(\d{1,2})?\.(com|desi)/photos/gallery/.*/\d{1,3}$/ // @match http://*.imghall.com/?v=* // @match https://*.acidimg.cc/img-* // @match https://imgcloud.pw/image/* // @match https://z4a.net/image/* // @match https://t.hogor.net/?pm=* // @match http://xxxwebdlxxx.org/*.html // @match https://www.sizzlingclicks.com/image/* // @match http://wwxxww.ru/*.html // @match http://wwxxww.ru/full/ // @match http://passpix.com/images/* // @match http://*.imgseed.com/img-*.html // @match http://img.folluo.me/image/* // @match *://imgpart.com/img-* // @match https://picstate.com/view/full/* // @match https://jerking.empornium.ph/image/* // @match https://truepic.org/* // @match https://www.jiopic.com/image/* // @match https://imx.to/img-* // @match https://imx.to/i/* // @match https://pixxxels.cc/* // @match http://picpic.online/*/*/ // @match http://imgking.xyz/*.html // @match http://moreimage.pw/image/* // @match https://imgsha.com/i/* // @match https://www.pic-upload.de/view-*/*.html // @match http://pic3you.org/*.html // @match http://pic3you.org/full/ // @match *://*.vipix.pw/images/*.html // @match https://*.imgazure.com/*.html // @match https://*.imgazure.com/full/ // @match *://*.dpic.me/* // @match *://*.picmoza.com//img-*.html // @match *://suckmypic.net/* // @match *://pic.hotimg.site/img-*.html // @match http://*.shaggyimg.pro/*.html // @match http://*.shaggyimg.pro/full/ // @match https://*.imgjazz.xyz/img-*.html // @match https://22pixx.xyz/i*-*/*.html // @match https://22pixx.xyz/i-*/*.html // @match https://22pixx.xyz/x-*/*.html // @match https://22pixx.xyz/y-*/*.html // @match *://trueimg.xyz/u-*/*.html // @match *://imgsmarts.info/*.html // @match *://imgsmarts.info/full/ // @match *://www.keepimg.com/image/* // @match https://ibb.co/* // @match http://*.imgsee.net/* // @match *://*.picbaron.com/*/*.html // @match *://*.imgbaron.com/*/* // @match https://kvador.com/*/*.html // @match http://picshost.info//img-*.html // @match *://imagescanner.cc/images/*.html // @match http://batpic.com/image/* // @match http://*.1pic.org/view/*.html // @match *://lookimg.com/image/* // @match http://*.xfap.fun/img-*.html // @match *://*.hdmoza.com//img-*.html // @match *://trans.firm.in/images/*.html // @match http://*.imgtorrnt.in/view.php?id=* // @match https://*.dailyimages.xyz/*.html // @match https://*.dailyimages.xyz/full/ // @match http://*.petrovixxxjav.com//img-*.html // @match *://*.placeimg.net/img-*.html // @match https://subefotos.com/ver/?* // @match http://*.imageshtorm.com/img-*.html // @match https://*.blameless.work/img-*.html // @match https://trumbhost.com/images/*.html // @match http://*.xxx.kodiak.top/img-*.html // @match *://*.your-pictures.net/p*/*.html // @match https://*.xaoutchouc.live/img-*.html // @match https://*.picusha.net/?v=* // @match https://e621.net/posts/* // @match https://rule34.xxx/index.php?page=post&s=view&id=* // @match https://*.rule34hentai.net/post/view/* // @match https://pixs.cx/* // @match *://mshelxxx.ru.com//img-*.html // @match *://www.hentai-foundry.com/pictures/* // @exclude *://www.hentai-foundry.com/pictures/user/*/page/* // @match *://imgcredit.xyz/image/* // @match *://drlink.online/*/*/ // @match https://savepice.ru/full/*.html // @match https://kropic.com/*/*.html // @match http://*.imgzong.xyz/* // @match https://www.furaffinity.net/view/* // @match http://imageking.xyz/* // @match http://imgxx.xyz/* // @match http://imgao.xyz/* // @match http://imgweng.xyz/* // @match http://imgkes.xyz/* // @match https://imgair.net/* // @match https://imgtgd.shop/* // @match https://*.imgsto.com/*/*.html // @match https://*.pics4you.net/*/*.html // @match https://*.pics4you.org/*/*.html // @match https://vipr.im/* // @match https://*.trans.firm.in/img-*.html // @match https://*.imgdawgknuttz.com/img-*.html // @match https://*.xxxwebdlxxx.top/img-*.html // @match https://*.olarixas.xyz/img-*.html // @match http://imgkoi.xyz/* // @match https://imagehaha.com/*/* // @match https://picshick.com/*/* // @match https://imgsen.com/*/*.html // @match https://premalo.com/*/*.html // @match https://picdollar.com/*/*.html // @match https://fotokiz.com/*/*.html // @match https://silverpic.com/*/*.html // @match https://silverpic.net/*/*.html // @match http://imglin.xyz/* // @match *://*.crownimg.com/*/*.html* // @match http://imgkr.xyz/* // @match *://*.xxxwebdlxxx.org/img-*.html // @match http://imgbird.xyz/* // @match https://*.pornhd720p.com//img-*.html // @match http://imgwewo.xyz/* // @match https://*.rintor.space/image/* // @match http://imgirx.xyz/* // @match http://*.imgalor.xyz/* // @match http://imgjut.buzz/* // @match http://imgtrw.buzz/* // @match http://imglina.xyz/* // @match http://imgkuiw.xyz/* // @match http://imgwang.buzz/* // @match https://imgbb.com/* // @match *://vfl.ru/fotos/*.html // @match https://*.imgstar.eu/*/*.html // @match https://dewimg.com/*.php // @match https://pictwn.com/*.php // @match https://comment-cdn.9gag.com/image?* // @match https://t.me/*/* // @match https://telegram.me/*/* // @match *://piccy.info/view3/*/*/ // @match http://imgmeno.buzz/* // @match https://*.pics4upload.com/*/*.html // @match http://imgpekele.buzz/* // @match http://imglqw.buzz/* // @match http://imgyng.buzz/* // @match http://imgbbd.buzz/* // @match http://imgwia.buzz/* // @match http://imgowk.buzz/* // @match http://imgokr.buzz/* // @match http://imgoiu.buzz/* // @match https://picmoney.org/image/* // @match *://skrinshoter.ru/s/*/* // @match https://photo-screen.ru/i/* // @match https://postlmg.cc/* // @match https://pasteboard.co/* // @match https://*.picklik.ru/image/* // @match https://*.jpg.church/img/* // @match https://rule34.us/index.php?r=posts/view&id=* // @match https://*.imghub.ru/i/* // @match https://imgeza.buzz/* // @match http://mrlzqoe.buzz/* // @match https://radikal.host/i/* // @match https://*.slowpic.xyz//img-*.html // @match https://yapx.ru/*/* // @match https://imgpukxxr.site/* // @match https://picngt.shop/* // @match https://realbooru.com/index.php?page=post&s=view&id=* // @match *://imgutkr.store/* // @match *://imghhr.online/* // @match *://imglaiw.store/* // @match https://meetimgz.com/*.php // @match *://imgvue.online/* // @match *://imgxgf.store/* // @match *://imgbibam.online/* // @match https://imgsh.net/a/* // @match *://imgqaz.online/* // @match *://imgurt.online/* // @match https://jpg5.su/img/* // @match https://jpg6.su/img/* // @match https://jpg7.cr/img/* // @match *://imgwxr.online/* // @match *://imgyre.online/* // @match https://pixl.li/image/* // @match https://pixlev.store/* // @match https://pixmax.store/* // @match https://imgxqy.online/* // @match https://skr.sh/* // @match https://i.redd.it/* // @match https://preview.redd.it/* // @match https://www.reddit.com/media?url=* // @match https://vsco.co/*/media/* // @match https://www.gettyimages.com/detail*photo* // @match https://www.gettyimages.com/detail*video* // @match https://jpg.pet/img/* // @match https://jpeg.pet/img/* // @match https://imgnmh.cfd/* // @match https://im.ge/i/* // @match https://piczel.tv/gallery/image/* // @match https://www.screencast.com/t/* // @match https://slushe.com/galleries/*.html // @match https://img.trafficimage.club/image/* // @match https://*.picturedent.org/image/* // @match https://pig69.com/upload/* // @match https://javball.com/upload/* // @match https://idol69.net/upload/* // @match https://picqaxs.cfd/* // @match https://www.zupimages.net/viewer.php?id=* // @match https://porn4f.com/upload/* // @match https://ovabee.com/upload/* // @match https://ai18.pics/upload/* // @match https://paste.pics/* // @match https://cnxx.me/upload/* // @match https://cnpics.org/upload/* // @match https://picvvvd.sbs/* // @match https://civitai.com/images/* // @match https://civitai.com/posts/* // @match https://cosplay18.pics/upload/* // @match https://*.mjj.today/i/* // @match https://adult-images.ru/*/*/ // @match https://imgfoto.host/i/* // @match https://picabox.ru/pic/* // @match https://snipboard.io/* // @match https://www.seaart.ai/explore/detail/* // @match https://tensor.art/images/* // @match https://freeimage.host/i/* // @match https://imgjjtr.sbs/* // @match https://tezzpic.com/*.php // @match https://clip2net.com/s/* // @match https://4fuk.me/upload/* // @match https://555fap.com/upload/* // @match https://kin8-av.com/upload/* // @match https://javsunday.com/upload/* // @match https://*.redgifs.com/watch/* // @match https://*.redgifs.com/gifs/* // @match https://hentaicovid.com/uploads/* // @match https://hentaipig.com/upload/* // @match https://fikfok.net/upload/* // @match https://image.javbee.me/* // @match https://pixeldrain.com/u/* // @match https://getapic.me/v/* // @match https://3minx.com/upload/* // @match https://sweetie-fox.com/upload/* // @match https://porn4f.org/upload/* // @match https://pixai.art/artwork/* // @match https://pixai.art/video/* // @match https://image.javbee.vip/* // @match https://fc2ppv.stream/upload/* // @match https://blackwidof.org/upload/* // @match https://iimg.su/i/* // @match https://radikal.cloud/i/* // @match https://hamster.is/image/* // @match https://hamsterimg.net/image/* // @match https://coomimgs.net/image/* // @match https://javring.com/upload/* // @match https://xcamcovid.com/upload/* // @match https://javtele.net/upload/* // @match https://hentai4f.com/upload/* // @match https://porn-pig.com/upload/* // @match https://kin8-jav.com/upload/* // @match https://cn-av.com/upload/* // @match https://anime-jav.com/upload/* // @match https://chinese-pics.com/upload/* // @match https://kr-av.com/upload/* // @match https://xxpics.org/upload/* // @match https://hentaixnx.com/upload/* // @match https://hentai-sub.com/upload/* // @match https://cosplay-xxx.com/upload/* // @match https://www.weasyl.com/*/submissions/* // @match https://ltdfoto.ru/image/* // @match https://imgouhmde.sbs/* // @match https://vgy.me/u/* // @match https://gyazo.com/* // ==/UserScript== "use strict"; console.debug("HandyImage Script running"); if (typeof unsafeWindow === "undefined") { unsafeWindow = window; console.warn("unsafeWindow missing"); } if (typeof GM_registerMenuCommand !== "undefined") { GM_registerMenuCommand("Handy Image Configuration", cfg, "C"); } if(window.location.href.lastIndexOf(window.location.hostname) + window.location.hostname.length + 1 == window.location.href.length) { console.warn("we are on website's main page, aren't we?"); return false; } let type = document.contentType.substring(0,document.contentType.indexOf("/")); if (type === "image" || type === "video") { console.warn("Handy isn't needed for directly opened images or videos (if you want it this way - use CenterImage userscript"); return false; } if(history.length !== 1 && document.referrer) { if(document.referrer.lastIndexOf(window.location.hostname) != -1 && document.referrer.lastIndexOf(window.location.hostname) +1 == document.referrer.length - window.location.hostname.length) { console.warn("Handy Image: userscript stopped itself from running INTENTIONALLY: cuz your previous page is websites mainpage so you probably have just uploaded a picture yourself"); return false; } } if (document.title == "Attention Required! | Cloudflare" || document.title == "Just a moment...") { console.warn("Cloudflare MITM guard page. Stopping."); return false; } if(sessionStorage.length) { if(sessionStorage.hji) { if(sessionStorage.hji.indexOf(window.location.href) != -1) // check address in case page failed to load b4 { console.warn("Handy Image: userscript stopped itself from running INTENTIONALLY"); setTimeout(function() {sessionStorage.removeItem("hji");},1000); // for frames return false; } sessionStorage.removeItem("hji"); } else if(sessionStorage.hji_back) { if(Date.now() < parseInt(sessionStorage.hji_back)) // 2 sec not yet passed { console.warn("Handy Image: userscript now helps you go to previous page automatically"); sessionStorage.removeItem("hji_back"); window.history.go(-1); return false; } sessionStorage.removeItem("hji_back"); } } function q(s){if(document.body){return document.body.querySelector(s);}return null;} var cfg_direct = false; var cfg_bgclr ="grey"; var cfg_fitWH = true; var cfg_fitB = false; var cfg_fitS = true; var cfg_fitOS = false; var cfg_js; var cfg_vol = "0.5"; var referrer_policy = "strict-origin-when-cross-origin"; // default browser behavior var dp = false; let orgImgWidth; let orgImgHeight; var rescaled = 0; var tb = 0; var timeout = 1000; var FireFox = ((navigator.userAgent.indexOf('Firefox') != -1) ? true : false); var i; var j; var bStopScripts = false; var bUseCustomFilename = true; var filename = ""; var filename_ext = ""; var skip_by = 5; var is_video = false; var is_gallery = false; var ext_list_not_image = ['zip', '7z', 'rar', 'psd', 'swf', 'doc', 'rtf', 'pdf']; var ext_list_video = ['webm', 'mp4', 'm4v', 'avi', 'flv', 'ogg']; var iurl = window.location.hostname; if(!iurl.indexOf("www.")) { iurl = iurl.substr(4); } var host = iurl; if(window.location.pathname.indexOf("//") == 0) { iurl += "/"; } function ws() { if(!FireFox) // NOT firefox { window.stop(); } } function sanitize() // lol I'm such a hacker { removeAllListeners(); let lasttask = unsafeWindow.setTimeout(function() {},0); for(let n = lasttask; n > 0; n--) { //if(n !== tg) // unsafeWindow.clear can't clear window.tasks set in the userscript but lets be safe //{ unsafeWindow.clearTimeout(n); // only unsafeWindow has access to clear page tasks //} } } const protected_createElement = Document.prototype.createElement.bind(document); protected_addEventListener.originalF = Element.prototype.addEventListener; function protected_addEventListener (el, event, handler, capture = false) { return protected_addEventListener.originalF.call(el, event, handler, capture); } var _eventHandlers = {}; var origAdd = unsafeWindow.Element.prototype.addEventListener; // page's one if(FireFox && typeof exportFunction === "function") { wrapper_addEventListener = exportFunction(wrapper_addEventListener, unsafeWindow); // TM magic } // addEventListener inside userscript's `window` doesn't change unsafeWindow.Window.prototype.addEventListener = wrapper_addEventListener; unsafeWindow.Document.prototype.addEventListener = wrapper_addEventListener; unsafeWindow.Element.prototype.addEventListener = wrapper_addEventListener; function wrapper_addEventListener (event, handler, capture = false) { //if (typeof _eventHandlers === "undefined") unsafeWindow._eventHandlers = {}; if (bStopScripts) { console.debug("HJI: stopped 1 addEventListener: " + event); return null; } if (!(event in _eventHandlers)) _eventHandlers[event] = []; _eventHandlers[event].push({ node: this || unsafeWindow, handler: handler, capture: capture }); console.debug("HJI: wrapped 1 addEventListener: " + event + ", "+ Object.keys(_eventHandlers).length); return origAdd.call(this, event, handler, capture); } function removeAllListeners () { console.debug("HJI: removed "+ Object.keys(_eventHandlers).length + " event listeners: " + Object.keys(_eventHandlers)); for(let event in _eventHandlers) { _eventHandlers[event].forEach(({ node, handler, capture }) => node.removeEventListener(event, handler, capture)); delete _eventHandlers[event]; } } function onVisibilityChange() { if (document.visibilityState === 'visible') { if(i && i.src) { window.removeEventListener('visibilitychange', onVisibilityChange); onWindowResize(); autoresize(); } } } const AddElementToPage = typeof GM_addElement === "function" ? GM_addElement : function (node, type, content) { let el = protected_createElement(type); el.textContent = content.textContent; node.appendChild(el); }; // stupid adGuard function DeleteAllCookies() { document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); } function onscript(e) { //console.debug( "STOPPED: " + e.target.src + e.target.innerHTML); console.debug( "HJI: onscript stopped 1 script from loading"); e.preventDefault(); e.stopImmediatePropagation(); } function onbeforeunload() // back helper { sessionStorage.hji_back = Date.now() + 2000; // 2 sec to help back from double-pages } function makeimage() { if(typeof cfg_js !== "string") { console.log("waiting for settings to load to makeimage()"); if(!loadCfg_callbacks.includes(makeimage)){loadCfg_callbacks.push(makeimage);} return false;} // lets wait for stupd async if(cfg_direct === true){let a = protected_createElement('a'); a.setAttribute('href',i.src); a.click(); return false;} let css = `:root, body { height: 100%; width: 100%; margin: 0px; display: grid; } img, video { margin: auto; outline: none; max-width: unset; max-height: unset; image-orientation: from-image; } video::-webkit-media-controls-panel { background-image: linear-gradient(transparent, transparent) !important; } :root, body, img, video { min-width: 0px; min-height: 0px; background-color: ${cfg_bgclr}; }`; // don't mind the broken identation, multiline string demands it AddElementToPage(document.documentElement, 'style', {textContent: css}); ws(); let isrc = i.src; i = protected_createElement(is_video? "video" : "img"); i.src = isrc; document.body.appendChild(i); if(!is_video) { protected_addEventListener(i, "click", rescale, true); } else { i.volume = cfg_vol; protected_addEventListener(i, "volumechange", onvolumechange, true); i.controls = true; i.loop = true; i.preload = "auto"; i.focus(); // so video volume built-in hotkeys would work (until you unfocus it) } protected_addEventListener(i, "auxclick", rescale, true); protected_addEventListener(i, "mousedown", mousedown, true); // chrome old fix - still needed window.addEventListener("keydown", onkeydown, true); window.addEventListener("resize", onWindowResize); window.addEventListener("visibilitychange", onVisibilityChange); onVisibilityChange(); // if tab is already active when opening image if(dp){console.warn("you are on a double-page image hosting (probably)");window.addEventListener("beforeunload", onbeforeunload, true);} if (typeof GM_registerMenuCommand !== "undefined") { GM_registerMenuCommand("Handy Image Download image", download_image, "N"); GM_registerMenuCommand("Handy Image Re-Load page normally", () => {sessionStorage.hji = window.location.href; window.location.reload();}, "R"); } } function find_text_in_scripts(text, stopword, start_from_top = false, search_after_word = null, content_type = "img") { let scripts = document.getElementsByTagName("script"); const searchFunc = start_from_top ? String.prototype.indexOf : String.prototype.lastIndexOf; for(let n = 0; n < scripts.length; n++) { let foundIdx; if(search_after_word) { foundIdx = searchFunc.call(scripts[n].innerHTML, search_after_word); if(foundIdx === -1) { foundIdx = undefined; console.debug("find_text_in_scripts(): NOT found search_after_word: "); continue; // the word MUST be present } else { console.debug("find_text_in_scripts(): found search_after_word at: " + foundIdx); } } let found_start_pos = searchFunc.call(scripts[n].innerHTML, text, foundIdx); if(found_start_pos == -1){continue;} // text not found in this