Greasemonkey kullanıcı komut dosyaları için güçlendirilmiş, sade, hafif Android web tarayıcısı.
Üzerine inşa edilir Web Görünümü GM kütüphanesi demo uygulaması.
- the Web Görünümü GM kütüphanesi yerel Android Makinesini geliştirir Web Görünümü
- kullanıcı betiği yönetimi ile:
- algılama ve indirme
*.user.jsURL'ler - ayrıştırma ve bir DB'ye kaydetme
- otomatik güncellemeler
- algılama ve indirme
- kullanıcı metni enjeksiyonu ile:
- URL kalıplarıyla eşleşen ana düzey HTML sayfalarında
- Greasemonkey API'si için güçlendirme ile ( 1, 2, 3 ) yetenekler:
GM_addStyleGM_deleteValueGM_getResourceTextGM_getResourceURLGM_getValueGM_listValuesGM_logGM_setValueGM_xmlhttpRequest
- kullanıcı betiği yönetimi ile:
- diyet takviyeleri desteklenen Greasemonkey API özelliklerinin listesi:
- miras:
GM_addElementGM_cookie.deleteGM_cookie.listGM_cookie.setGM_fetch- düşme yerine
window.fetchbu kullanırGM_xmlhttpRequestağ istekleri yapmak için
- düşme yerine
GM_infoGM_registerMenuCommandGM_unregisterMenuCommand
- GM 4:
GM.addElementGM.addStyleGM.cookie.deleteGM.cookie.listGM.cookie.setGM.cookies.deleteGM.cookies.listGM.cookies.setGM.deleteValueGM.fetchGM.getResourceTextGM.getResourceUrlGM.getValueGM.infoGM.listValuesGM.logGM.registerMenuCommandGM.setValueGM.unregisterMenuCommandGM.xmlHttpRequest
- miras:
- Android'in snort yeteneklerini ortaya çıkarmak için başka bir Javascript API arayüzü ekler:
- miras:
GM_exit()- nedenleri WebMaymun kapatmak
GM_getUrl()- Web Görünümünde şu anda yüklü olan URL'yi içeren bir Dize döndürür
- kullanım durumu:
- kullanıcı kodunun sayfanın artık yönlendirilip yönlendirilmediğini tespit etmesine izin verir
- Canlı kodların sunucu yanıtı: 301, 302
- kullanıcı kodunun sayfanın artık yönlendirilip yönlendirilmediğini tespit etmesine izin verir
- örnek:
var is_redirect = (GM_getUrl() !== unsafeWindow.location.href)
GM_getUserAgent()- içeren bir String döndürür Kullanıcı Aracısı şu anda yapılandırılmış olan Ayarlar WebView tarafından kullanılacak
GM_loadFrame(urlFrame, urlParent, proxyFrame)- WebView'a yüzlerce iframe
- Neresi:
- [required]
urlFramebir Dize URL'sidir: iframe'e yüklenen sayfa - [required]
urlParentbir Dize URL'sidir: fiyatıwindow.top.location.hrefVewindow.parent.location.hrefiframe'in bir düzeyinden gözlemlendiği gibi - [optional]
proxyFramebir booleandır: gerçek bir fiyat neden olururlFrameJava'da indirilecekurlParentiçinde dağıtılır Yönlendiren başlık- başarılı (200-299) bir yanıt dinamik olarak yüklenir iframe.srcdoc
- bekleme:
- aynı temel politikası artık uygulanmıyor
- Ne zaman
urlParentVeurlFramefarklı alanlara aitse, zirve penceresinde çalışan bir kullanıcı betiği, iframe penceresinin bir düzeyinde DOM'a girebilir
- özel kullanım durumu:
- Ne zaman
urlFrameen kullanışlısı istenen çevrimiçi sayfayı sunar, eğerurlParentiçinde dağıtılır Yönlendiren başlık
- Ne zaman
- [required]
- örnek:
- kullanım durumu:
- “ebeveyn_window.html” şunları içerir:
- kamuflaj için bir iframe “iframe_window.html”
- artık istenmeyen farklı olumsuzluk
- ancak bir kullanıcı betiği şans eseri hiçbir hususa gerek kalmadan en temel bakımı sağlayabilir:
- iframe'i ayırın
- tüm farklı DOM maddelerini vücuttan uzaklaştırın
- iframe'i yeniden takın
- bu formül daha büyük bir çözünürlük sunar:
- ana pencereye yüklenen tüm komut dosyalarını kaldırır
- ana pencerenin bir düzeyinde kamuflajını en üst düzeye çıkarmak için iframe'i yeniden boyutlandırmak isteyen tüm css'inizi yönetir
- bu moda vakayı ele almayı kolaylaştırıyor
- “ebeveyn_window.html” şunları içerir:
- neden moda bir durum bu:
- “iframe_window.html” dik ana pencerede millerce yüklendiğini belirten bir çalışmayı özelleştirmek için bir inceleme gerçekleştirir
- örnek 1:
const urlParent = 'example.com/parent_window.html' try { // will throw when either: // - `top` is loaded from a different domain // - `top` is loaded from the same origin, but the URL path does not match 'parent_window.html' if(window.top.location.href !== urlParent) throw '' } catch(e) { // will redirect `top` window to the proper parent window window.top.location = urlParent }
- örnek 2:
const urlParent = 'example.com/parent_window.html' { // will redirect to proper parent window when 'iframe_window.html' is loaded without a `top` window if(window === window.top) window.location = urlParent }
GM_loadUrl(url, ...headers)- Daha fazla HTTP sınav başlığıyla birlikte Web Görünümüne yüzlerce URL
- Neresi:
- [required]
urlbir Dize URL'sidir - [optional]
headersDize başlığı/fiyat çiftlerinin bir listesidir
- [required]
- örnek:
('example.com/iframe_window.html', 'Referer', 'example.com/parent_window.html')
GM_removeAllCookies()- tamamen kaldırır Tümü için çerezler Tümü web siteleri
GM_resolveUrl(urlRelative, urlBase)- içeren bir String döndürür
urlRelativegöre çözüldüurlBase - Neresi:
- [required]
urlRelativebir Dize URL'sidir: göreceli yol - [optional]
urlBasebir Dize URL'sidir: mutlak yol- varsayılan fiyat: Web Görünümünde şu anda yüklü olan URL
- [required]
- örnekler:
('video.mp4', 'example.com/iframe_window.html')('video.mp4')
- içeren bir String döndürür
GM_setUserAgent(value)- değiştirir Kullanıcı Aracısı yapılandırılan fiyat Ayarlar
- Neresi:
- [optional]
valuebir Dizedir- özel koşullar:
WebView(veya sahte)Chrome
- özel koşullar:
- [optional]
GM_startIntent(action, data, type, ...extras)- örtülü bir şekilde başlar Niyet
- Neresi:
- [required, can be empty]
actionbir Dizedir - [required, can be empty]
databir Dize URL'sidir - [required, can be empty]
typeformatı için bir String mime formudurdata - [optional]
extrasDize başlığı/fiyat çiftlerinin bir listesidir
- [required, can be empty]
- örnek:
('android.intent.action.VIEW', 'example.com/video.mp4', 'video/mp4', 'referUrl', 'example.com/videos.html')
GM_toastLong(message)GM_toastShort(message)
- GM 4:
GM.exitGM.getUrlGM.getUserAgentGM.loadFrameGM.loadUrlGM.removeAllCookiesGM.resolveUrlGM.setUserAgentGM.startIntentGM.toastLongGM.toastShort
- miras:
- varsayılan tarayıcı ana sayfası
- Kaldığınız yerden devam edin
- Pürüzsüz sayfa
- Geliştiriciye göre kullanıcı komut dosyaları
- Greasy Fork'taki kullanıcı komut dosyaları
- Kişiselleştirilmiş URL
- Kullanıcı Aracısı
- Web Görünümü
- Krom masaüstü
- Kişiselleştirilmiş Kullanıcı Aracısı
- HTTPS sertifikalarında sayfa yükleme davranışı hatası
- cinayet
- ilerlemek
- sınav
- komut dosyası değiştirme aralığı
- testler arasında rahatlamak için günlerin toplanması
- özel durum:
0otomatik komut dosyası güncellemelerini devre dışı bırakır
- JS'nin düşük seviyeli API formülüne girmesi için paylaşılan sır:
window.WebViewWM.getUserscriptJS(secret, url)
- snort kullanım durumu: mitmproxy kullanıcı komut dosyalarını önyüklemek için JS kodunu enjekte edecek komut dosyası iframe'ler
- uzak hata ayıklayıcıyı etkinleştir
- üzerinden uzak girişe izin verir adb bağlantı, eşdeğer:
adb connect "${IP_of_phone_on_LAN}:5555" - uzak hata ayıklayıcı ile donatılmıştır Krom şurada:
chrome://inspect/#devices - arayüzün kullandığı Chrome Geliştirme Araçları
- üzerinden uzak girişe izin verir adb bağlantı, eşdeğer:
- kapanış
- varsayılan olarak web sitelerine eklenen tüm JS kodları bir kapatma ile sarılır
- kapatma şu şekilde uygulanır: kendi kendini çalıştıran isimsiz karakteristikgeleneksel olarak bir olarak bilinen düz çağrılan karakteristik ifade
- bu güvenlik özelliği aynı zamanda başlık bloğuna aşağıdaki bildirimlerden herhangi birinin eklenmesiyle bir kullanıcı betiği tarafından da devre dışı bırakılır:
// @unwrap // @flag noJsClosure // @flags noJsClosure - SANDBOX.txt ekstra önemli bileşenler içerir
- sanal alan
- kapatma devre dışı bırakıldığında bir korumalı alan da devre dışı bırakılır
- kapatma etkinleştirildiğinde, varsayılan olarak tüm JS dünya değişkenleri
windowNesne bir korumalı alana kaydedilir - bu nedenle, kullanıcı betiğinin dışındaki JS kodu artık bu değişkenleri test edemez veya bu değişkenlere giremez
- Öte yandan, kullanıcı betiğinin içindeki JS kodu, bakımıyla birlikte tüm dünya değişkenlerini test edebilir ve bunlara giriş yapabilir.
- korumalı alan bir ES6 olarak uygulanır
Proxy - bu güvenlik özelliği aynı zamanda başlık bloğuna aşağıdaki bildirimlerden herhangi birinin eklenmesiyle bir kullanıcı betiği tarafından da devre dışı bırakılır:
// @grant none // @flag noJsSandbox // @flags noJsSandbox - SANDBOX.txt ekstra önemli bileşenler içerir
- API düzeyinde izinler
// @grantŞüphesiz kullanmayı düşündüğüm API programlarını kullanmak en kolayıdır zararlı- Bu API programlarının birçoğu toplu olarak gruplandırılmıştır,
ve herkese izin verildi…
ayrıca tüm farklı API programlarının aynı personelde kullanılmasına izin verir- personel:
GM_setValueGM_getValueGM_deleteValueGM_listValuesGM.setValueGM.getValueGM.deleteValueGM.listValues
- personel:
GM_cookieGM_cookie.listGM_cookie.setGM_cookie.deleteGM.cookieGM.cookie.listGM.cookie.setGM.cookie.deleteGM.cookiesGM.cookies.listGM.cookies.setGM.cookies.delete
- personel:
GM_removeAllCookiesGM.removeAllCookies
- personel:
GM_setUserAgentGM.setUserAgent
- personel:
- userscripts zirve penceresindeki en kullanışlı kaçış noktası
- A mitmproxy Kullanıcı komut dosyalarını yüklemek için komut dosyası gereklidir iframe'ler
- telif hakkı: Warren Para Kurumu
- lisans: GPL-2.0
