Greasemonkey kullanıcı komut dosyaları için yine sade, hafif Android internet tarayıcısı.
Üzerine inşa edilir Web Görünümü GM kütüphanesi demo yardımcı programı.
- 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 modelleriyle eşleşen üst düzey HTML sayfalarında
- Greasemonkey API'si için tekrar 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_downloadGM_fetch- için iniş değiştirme
window.fetchbu egzersiz yaparGM_xmlhttpRequesttopluluk isteklerini etkilemek
- için iniş değiştirme
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 anlatma yeteneklerini öne çıkarmak için ekstra bir Javascript API arayüzü ekler:
- miras:
GM_exit()- nedenleri WebMaymun kapatmak
GM_getUrl()- şu anda Web Görünümü'nde yüklü olan URL'yi içeren bir Dize döndürür
- egzersiz durumu:
- Kullanıcı betiğinin, edinme sayfasının yönlendirilip yönlendirilmediğini tespit etmesine izin verir
- sunucu yanıtı yerleşik kodların saklanması: 301, 302
- Kullanıcı betiğinin, edinme sayfasının yönlendirilip yönlendirilmediğini tespit etmesine izin verir
- misal:
var is_redirect = (GM_getUrl() !== unsafeWindow.location.href)
GM_getUserAgent()- içeren bir String döndürür Müşteri Temsilcisi şu anda yapılandırılmış olan Ayarlar WebView tarafından kullanılacak
GM_loadFrame(urlFrame, urlParent, proxyFrame)- Web Görünümüne bir iframe yükler
- Neresi:
- [required]
urlFramebir Dize URL'sidir: iframe'e yüklenen edinme sayfası - [required]
urlParentbir Dize URL'sidir: fiyatıwindow.top.location.hrefVewindow.parent.location.hrefiframe sırasında tüm haritada fark edildiği gibi - [optional]
proxyFramebir booleandır: gerçek bir fiyat neden olururlFrameJava'da indirilecekurlParentiçerisinde gönderilir Yönlendiren başlık- aa başarı (200-299) yanıtı dinamik olarak yüklenir iframe.srcdoc
- kâr:
- aynı temele sahip koruma keşfetmez
- Ne zaman
urlParentVeurlFrametamamen farklı alanlara ait olduğundan, ipucu penceresi içinde çalışan bir kullanıcı betiği, iframe penceresi sırasında DOM'un tüm haritasına erişebilir
- özel egzersiz durumu:
- Ne zaman
urlFrameen kullanışlısı belirtilen çevrimiçi internet sayfasını sunar, eğerurlParentiçerisinde gönderilir Yönlendiren başlık
- Ne zaman
- [required]
- misal:
- egzersiz durumu:
- “ebeveyn_window.html” şunları içerir:
- haykıracak bir iframe “iframe_window.html”
- artık gerekmeyen tamamen farklı bir açıklama
- ancak bir kullanıcı metni, ihtiyaç duyulan temizliği hiç düşünmeden sağlayabilir:
- iframe'i ayırın
- tamamen farklı DOM özelliklerini vücuttan soyun
- iframe'i yeniden takın
- bu harita daha da büyük bir çözüm sunuyor:
- mumya veya baba penceresine yüklendiği düşünülen tüm komut dosyalarını ortadan kaldırır
- mumya veya baba penceresi sırasında tüm haritayı en üst düzeye çıkarmak için iframe'i yeniden boyutlandırmak için gereken tüm css'yi yönetir
- bu standart vakanın üstesinden gelmeyi kolaylaştırır
- “ebeveyn_window.html” şunları içerir:
- işte tipik bir durum:
- “iframe_window.html” en dikkat çekici anne veya baba penceresinde yüklendiğini doğrulamak için bir karşılaştırma 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)- ekstra HTTP başlık sorgusu içeren bir URL'yi Web Görünümüne yükler
- Neresi:
- [required]
urlbir Dize URL'sidir - [optional]
headersString başlık/fiyat çiftlerinin bir envanteridir
- [required]
- misal:
('example.com/iframe_window.html', 'Referer', 'example.com/parent_window.html')
GM_removeAllCookies()- tamamen ortadan 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 kurs - [optional]
urlBasebir Dize URL'sidir: mutlak rota- 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 Müşteri Temsilcisi 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 başlangıç yapar Niyet
- Neresi:
- [required, can be empty]
actionbir Dizedir - [required, can be empty]
databir Dize URL'sidir - [required, can be empty]
typedüzeni için bir String mime türüdürdata - [optional]
extrasString başlık/fiyat çiftlerinin bir envanteridir
- [required, can be empty]
- misal:
('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ı evi internet sayfası
- Kaldığınız yerden devam edin
- Boş internet sayfası
- Geliştiriciye göre kullanıcı komut dosyaları
- Greasy Fork'taki kullanıcı komut dosyaları
- Özelleştirilmiş URL
- Müşteri Temsilcisi
- Web Görünümü
- Krom masaüstü
- Özelleştirilmiş Müşteri Temsilcisi
- HTTPS sertifika hatasında internet sayfası yükleme davranışı
- iptal etmek
- ilerlemek
- bir konu oluşturmak
- komut dosyası güncelleme aralığı
- testler arasında tekrar kalan gün sayısı
- özel durum:
0otomatik komut dosyası güncellemelerini devre dışı bırakır
- JS'nin düşük seviyeli API haritasına erişmesi için paylaşılan sır:
window.WebViewWM.getUserscriptJS(secret, url)
- Egzersiz vakasını anlatın: 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 erişime izin verir adb bağlantı, eşdeğer:
adb connect "${IP_of_phone_on_LAN}:5555" - uzaktaki hata ayıklayıcı donanımlıdır Krom şurada:
chrome://inspect/#devices - arayüz egzersiz yapar Chrome Geliştirme Araçları
- üzerinden uzak erişime izin verir adb bağlantı, eşdeğer:
- kapanış
- varsayılan olarak internet sitelerine eklenen tüm JS kodları bir kapatma ile sarılır
- kapatma şu şekilde kullanılır: kendi kendini çalıştıran isimsiz karakteristikayrıca denir şu anda çağrılan karakteristik ifade
- bu güvenlik özelliği muhtemelen bir kullanıcı betiği tarafından başlık bloğuna sonraki bildirimlerden herhangi birinin eklenmesiyle devre dışı bırakılmıştır:
// @unwrap // @flag noJsClosure // @flags noJsClosure - SANDBOX.txt daha fazla ayrıntı içeriyor
- 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ı alanda tutulur - bu nedenle, kullanıcı betiğinin dışındaki JS kodu bu değişkenleri keşfedemez veya bu değişkenlere erişemez
- Öte yandan, kullanıcı betiğinin JS kodunun iç kısmı tüm dünya değişkenlerini keşfedebilir ve bunlara erişebilir…
- korumalı alan bir ES6 olarak kullanılıyor
Proxy - bu güvenlik özelliği muhtemelen bir kullanıcı betiği tarafından başlık bloğuna sonraki bildirimlerden herhangi birinin eklenmesiyle devre dışı bırakılmıştır:
// @grant none // @flag noJsSandbox // @flags noJsSandbox - SANDBOX.txt daha fazla ayrıntı içeriyor
- API düzeyinde izinler
// @grantPotansiyel olarak faydalı olacağını düşündüğüm API önerilerini uygulamak için gereken en kolay şey kötü- bu API önerilerinin birçoğu bir arada gruplandırılmıştır;
ve herhangi biri için verilen izin…
aynı zamanda tamamen farklı tüm API önerilerini aynı mahallede uygulama izni de verir- komşu:
GM_setValueGM_getValueGM_deleteValueGM_listValuesGM.setValueGM.getValueGM.deleteValueGM.listValues
- komşu:
GM_cookieGM_cookie.listGM_cookie.setGM_cookie.deleteGM.cookieGM.cookie.listGM.cookie.setGM.cookie.deleteGM.cookiesGM.cookies.listGM.cookies.setGM.cookies.delete
- komşu:
GM_removeAllCookiesGM.removeAllCookies
- komşu:
GM_setUserAgentGM.setUserAgent
- komşu:
- ipucu penceresindeki kullanıcı komut dosyalarının en kullanışlı eklentisi
- A mitmproxy Kullanıcı komut dosyalarını yüklemek için komut dosyası gereklidir iframe'ler
- telif hakkı: Warren Finans kurumu
- lisans: GPL-2.0
