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.js
URL'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_addStyle
GM_deleteValue
GM_getResourceText
GM_getResourceURL
GM_getValue
GM_listValues
GM_log
GM_setValue
GM_xmlhttpRequest
- kullanıcı betiği yönetimi ile:
- diyet takviyeleri desteklenen Greasemonkey API özelliklerinin listesi:
- miras:
GM_addElement
GM_cookie.delete
GM_cookie.list
GM_cookie.set
GM_download
GM_fetch
- için iniş değiştirme
window.fetch
bu egzersiz yaparGM_xmlhttpRequest
topluluk isteklerini etkilemek
- için iniş değiştirme
GM_info
GM_registerMenuCommand
GM_unregisterMenuCommand
- GM 4:
GM.addElement
GM.addStyle
GM.cookie.delete
GM.cookie.list
GM.cookie.set
GM.cookies.delete
GM.cookies.list
GM.cookies.set
GM.deleteValue
GM.download
GM.fetch
GM.getResourceText
GM.getResourceUrl
GM.getValue
GM.info
GM.listValues
GM.log
GM.registerMenuCommand
GM.setValue
GM.unregisterMenuCommand
GM.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]
urlFrame
bir Dize URL'sidir: iframe'e yüklenen edinme sayfası - [required]
urlParent
bir Dize URL'sidir: fiyatıwindow.top.location.href
Vewindow.parent.location.href
iframe sırasında tüm haritada fark edildiği gibi - [optional]
proxyFrame
bir booleandır: gerçek bir fiyat neden olururlFrame
Java'da indirilecekurlParent
iç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
urlParent
VeurlFrame
tamamen 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
urlFrame
en kullanışlısı belirtilen çevrimiçi internet sayfasını sunar, eğerurlParent
iç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]
url
bir Dize URL'sidir - [optional]
headers
String 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
urlRelative
göre çözüldüurlBase
- Neresi:
- [required]
urlRelative
bir Dize URL'sidir: göreceli kurs - [optional]
urlBase
bir 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]
value
bir 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]
action
bir Dizedir - [required, can be empty]
data
bir Dize URL'sidir - [required, can be empty]
type
düzeni için bir String mime türüdürdata
- [optional]
extras
String 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.exit
GM.getUrl
GM.getUserAgent
GM.loadFrame
GM.loadUrl
GM.removeAllCookies
GM.resolveUrl
GM.setUserAgent
GM.startIntent
GM.toastLong
GM.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:
0
otomatik 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
window
Nesne 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
// @grant
Potansiyel 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_setValue
GM_getValue
GM_deleteValue
GM_listValues
GM.setValue
GM.getValue
GM.deleteValue
GM.listValues
- komşu:
GM_cookie
GM_cookie.list
GM_cookie.set
GM_cookie.delete
GM.cookie
GM.cookie.list
GM.cookie.set
GM.cookie.delete
GM.cookies
GM.cookies.list
GM.cookies.set
GM.cookies.delete
- komşu:
GM_removeAllCookies
GM.removeAllCookies
- komşu:
GM_setUserAgent
GM.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