Greasemonkey kullanıcı komut dosyaları için daha güçlü hale getirilmiş, sade ve 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 Gadget'ını 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'sini güçlendirin ( 1, 2, 3 ) yetenekler:
GM_addStyleGM_deleteValueGM_getResourceTextGM_getResourceURLGM_getValueGM_listValuesGM_logGM_setValueGM_xmlhttpRequest
- kullanıcı betiği yönetimi ile:
- desteklenen Greasemonkey API özelliklerinin listesini tamamlar:
- miras:
GM_addElementGM_cookie.deleteGM_cookie.listGM_cookie.setGM_download- koymak
url(veyadetails.url) parametresi sonraki veri formlarından herhangi birini kabul eder:- Sicim
- aşağıdaki protokollerden herhangi birine sahip bir ses URI'si içeren:
- http:
- https:
- veri:
- aşağıdaki protokollerden herhangi birine sahip bir ses URI'si içeren:
- Dizi Tamponu
- Uint8Array
- Sicim
- API 19 (Android 4.4 KitKat) ve üzerini çalıştıran cihazlarda mutlak en pratik çalışmalar
- gereklilikler SAF
- koymak
GM_fetch- düşme yerine
window.fetchbu yorucu olurGM_xmlhttpRequestağ isteklerini çalıştırmak
- 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.downloadGM.fetchGM.getResourceTextGM.getResourceUrlGM.getValueGM.infoGM.listValuesGM.logGM.registerMenuCommandGM.setValueGM.unregisterMenuCommandGM.xmlHttpRequest
- miras:
- Android'e özgü yetenekleri geliştirmek için başka bir Javascript API arayüzü sağlar:
- miras:
GM_exit()- nedenleri WebMaymun kapatmak
GM_getUrl()- Web Görünümü içinde yüklenen etiketteki URL'yi içeren bir Dize döndürür
- egzoz kutusu:
- kullanıcı kodunun sayfanın yönlendirilip yönlendirilmediğini tespit etmesini sağlar
- sunucu yanıt diyagramı kodları: 301, 302
- kullanıcı kodunun sayfanın yönlendirilip yönlendirilmediğini tespit etmesini sağlar
- örnek:
var is_redirect = (GM_getUrl() !== unsafeWindow.location.href)
GM_getUserAgent()- içeren bir String döndürür Kullanıcı Aracısı bu etikette yapılandırılmıştır Ayarlar WebView tarafından egzoz için
GM_loadFrame(urlFrame, urlParent, proxyFrame)- WebView'a yüzlerce iframe
- koymak:
- [required]
urlFramebir Dize URL'sidir: iframe'e yüklenen sayfa - [required]
urlParentbir Dize URL'sidir: değerwindow.top.location.hrefVewindow.parent.location.hrefiframe'in her yerinden görüldüğü gibi - [optional]
proxyFramebir booleandır: sebep olmaya değer bir gerçekurlFrameJava'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
- destek:
- aynı başlangıç koruması artık bilinçli olmayacak
- Ne zaman
urlParentVeurlFrameçeşitli etki alanlarına ait olduğundan, son pencerede çalışan bir kullanıcı betiği, iframe penceresinin her yerinde DOM'a yapılan gerçek girişleri biriktirebilir
- özel egzoz kutusu:
- Ne zaman
urlFramemutlak en pratik, istenen web sayfaları sorununa hizmet ediyorsaurlParentiçinde dağıtılır Yönlendiren başlık
- Ne zaman
- [required]
- örnek:
- egzoz kutusu:
- “ebeveyn_window.html” şunları içerir:
- hediye edilecek bir iframe “iframe_window.html”
- artık istenmeyen çeşitli sorunlar
- bir kullanıcı betiğinin de sorunsuz bir şekilde gerekli temizliği sağlayacağını varsayalım:
- iframe'i ayırın
- tüm çeşitli DOM parçalarını vücuttan ortadan kaldırın
- iframe'i yeniden takın
- bu ilerleme daha büyük bir çözünürlük sağlar:
- baba veya anne penceresine şans eseri yüklenebilecek tüm komut dosyalarını kaldırır
- baba veya anne penceresinin her yerinde hediyesini en üst düzeye çıkarmak için iframe'i yeniden boyutlandırmak istediğiniz toplam css'nizi yönetir
- bu moda vakayı ele almayı basitleştiriyor
- “ebeveyn_window.html” şunları içerir:
- neden burada modaya uygun bir durum var:
- “iframe_window.html” samimi baba veya anne penceresinde yüklenip yüklenmediğini kontrol etmek için bir kontrol 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)- yüzlerce URL'yi Web Görünümü'ne daha fazla HTTP ile birlikte başlıklara bir soru bırakın
- koymak:
- [required]
urlbir Dize URL'sidir - [optional]
headersDize adı/değer ç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 - koymak:
- [required]
urlRelativebir Dize URL'sidir: göreceli yön - [optional]
urlBasebir Dize URL'sidir: mutlak yön- varsayılan değer: Web Görünümü'nde yüklenen etiketteki URL
- [required]
- örnekler:
('video.mp4', 'example.com/iframe_window.html')('video.mp4')
- içeren bir String döndürür
GM_setUserAgent(value)- ayarlamalar Kullanıcı Aracısı yapılandırılan değer Ayarlar
- koymak:
- [optional]
valuebir Dizedir- özel durumlar:
WebView(veya sahte)Chrome
- özel durumlar:
- [optional]
GM_startIntent(action, data, type, ...extras)- örtülü bir başlangıç yapar Niyet
- koymak:
- [required, can be empty]
actionbir Dizedir - [required, can be empty]
databir Dize URL'sidir - [required, can be empty]
typeyapısı için bir String mime türüdürdata - [optional]
extrasDize adı/değer ç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 yere devam edin
- Pürüzsüz sayfa
- Geliştiriciye göre kullanıcı komut dosyaları
- Greasy Fork'taki kullanıcı komut dosyaları
- Özel URL
- Kullanıcı Aracısı
- Web Görünümü
- Krom masaüstü
- Özel Kullanıcı Aracısı
- için uygulama
@run-at document-end- belge: DOMContentLoaded
- WebViewClient: onPageBitti
- bu seçim, kullanıcı komut dosyalarının sayfa yükleme başına bir kereden fazla teşvik edilmesini tetikleyebilir
- HTTPS sertifikalarında sayfa yükleme davranışı hatası
- suikast düzenlemek
- ilerlemek
- araştırmak
- komut dosyası güncelleme aralığı
- Sınavlar arasında motive olmak için gün sayısı
- özel durum:
0otomatik komut dosyası güncellemelerini devre dışı bırakır
- JS'nin düşük seviyeli API ilerlemesine giriş gerçeklerini biriktirmesi için paylaşılan sır:
window.WebViewWM.getUserscriptJS(secret, url)
- özel egzoz durumu: mitmproxy kullanıcı komut dosyalarını önyüklemek için JS kodunu enjekte edecek komut dosyası iframe'ler
- uzun mesafeli bir hata ayıklayıcıyı etkinleştir
- uzun bir mesafenin birikmiş giriş gerçekliğini mümkün kılar adb bağlantı, eşdeğer:
adb connect "${IP_of_phone_on_LAN}:5555" - uzun bir yol hata ayıklayıcısı mevcuttur Krom şurada:
chrome://inspect/#devices - arayüz yorucu oluyor Chrome Geliştirme Araçları
- uzun bir mesafenin birikmiş giriş gerçekliğini mümkün kılar adb bağlantı, eşdeğer:
- AdBlock'u etkinleştir
- varsayılan: yetkili
- özelleştirilmiş Engelleme Listesi URL'si
- varsayılan: pgl.yoyo.org
- tavsiye: Bu URL boşsa veya şu anda indirilemiyorsa, uygulamaya entegre edilmiş varsayılan engellenenler listesinin statik bir kopyası silinecektir
- özelleştirilmiş Engelleme Listesi güncelleme aralığı
- Engellenenler listesinin yeni bir kopyasını indirmeden önce motive edilmesi gereken gün sayısı
- varsayılan: 7
- kapatma
- varsayılan olarak çevrimiçi sayfalara eklenen tüm JS kodları bir kapatma ile sarılır
- kapatma şu şekilde uygulanır: kendi kendine çalışan anonim özelliktipik olarak şu şekilde tanımlanır: gerçek şimdi çağrılan özellik ifadesi
- Bu güvenlik özelliği şans eseri bir kullanıcı betiği tarafından başlık bloğuna aşağıdaki bildirimlerden herhangi birinin eklenmesiyle devre dışı bırakılabilir:
// @unwrap // @flag noJsClosure // @flags noJsClosure - SANDBOX.txt ekstra bilgi içerir
- sanal alan
- bir kapatma devre dışı bırakıldığında, bir sanal alan da devre dışı bırakılır
- kapatma etkinleştirildiğinde, varsayılan olarak tüm JS global değişkenleri
windowNesne bir korumalı alana kaydedilir - bu nedenle, JS kodu kullanıcı betiğinin havasını başlatır, artık bu değişkenlere gerçek girişi değerlendiremez veya biriktiremez
- alternatif olarak, kullanıcı betiğinin içindeki JS kodu, özel değişkenleriyle birlikte tüm küresel değişkenlere gerçek girişi değerlendirebilir ve biriktirebilir.
- korumalı alan bir ES6 olarak uygulanır
Proxy - Bu güvenlik özelliği şans eseri bir kullanıcı betiği tarafından başlık bloğuna aşağıdaki bildirimlerden herhangi birinin eklenmesiyle devre dışı bırakılabilir:
// @grant none // @flag noJsSandbox // @flags noJsSandbox - SANDBOX.txt ekstra bilgi içerir
- API düzeyinde izinler
// @grantpotansiyel olarak atayacağım API yöntemlerinin tüketilmesi için mutlak en pratik gerekliliktir sağlıksız- bu API yöntemlerinin birçoğu birlikte gruplandırılmıştır,
ve herhangi bir kişiye verilen izin…
ayrıca aynı ekip içindeki tüm çeşitli API yöntemlerinin tüketilmesine izin verir- takım:
GM_setValueGM_getValueGM_deleteValueGM_listValuesGM.setValueGM.getValueGM.deleteValueGM.listValues
- takım:
GM_cookieGM_cookie.listGM_cookie.setGM_cookie.deleteGM.cookieGM.cookie.listGM.cookie.setGM.cookie.deleteGM.cookiesGM.cookies.listGM.cookies.setGM.cookies.delete
- takım:
GM_removeAllCookiesGM.removeAllCookies
- takım:
GM_setUserAgentGM.setUserAgent
- takım:
- kullanıcı komut dosyaları son pencerede mutlak en pratik dürtü
- A mitmproxy Kullanıcı komut dosyalarını yüklemek için komut dosyası gereklidir iframe'ler
- telif hakkı: Warren Bankası
- lisans: GPL-2.0
