Speed the sanitizer up a bit, again
- allow youtube urls to start with `www` - use `strings.Builder` instead of a `bytes.Buffer` - use a `strings.NewReader` instead of a `bytes.NewBufferString` - sprinkles a couple of `continue` to make the code-flow more obvious - inline calls to `inList`, and put their parameters in the right order - simplify isPixelTracker - simplify `isValidIframeSource`, by extracting the hostname and comparing it directly, instead of using the full url and checking if it starts with multiple variations of the same one (`//`, `http:`, `https://` multiplied by ``/`www.`) - add a benchmark
This commit is contained in:
parent
eda2e2f3f5
commit
3d0126be0b
4 changed files with 3502 additions and 51 deletions
|
@ -4,7 +4,6 @@
|
|||
package sanitizer // import "miniflux.app/v2/internal/reader/sanitizer"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"regexp"
|
||||
|
@ -19,7 +18,7 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
youtubeEmbedRegex = regexp.MustCompile(`//www\.youtube\.com/embed/(.*)$`)
|
||||
youtubeEmbedRegex = regexp.MustCompile(`//(?:www\.)?youtube\.com/embed/(.+)$`)
|
||||
tagAllowList = map[string][]string{
|
||||
"a": {"href", "title", "id"},
|
||||
"abbr": {"title"},
|
||||
|
@ -80,12 +79,12 @@ var (
|
|||
|
||||
// Sanitize returns safe HTML.
|
||||
func Sanitize(baseURL, input string) string {
|
||||
var buffer bytes.Buffer
|
||||
var buffer strings.Builder
|
||||
var tagStack []string
|
||||
var parentTag string
|
||||
blacklistedTagDepth := 0
|
||||
|
||||
tokenizer := html.NewTokenizer(bytes.NewBufferString(input))
|
||||
tokenizer := html.NewTokenizer(strings.NewReader(input))
|
||||
for {
|
||||
if tokenizer.Next() == html.ErrorToken {
|
||||
err := tokenizer.Err()
|
||||
|
@ -114,7 +113,10 @@ func Sanitize(baseURL, input string) string {
|
|||
tagName := token.DataAtom.String()
|
||||
parentTag = tagName
|
||||
|
||||
if !isPixelTracker(tagName, token.Attr) && isValidTag(tagName) {
|
||||
if isPixelTracker(tagName, token.Attr) {
|
||||
continue
|
||||
}
|
||||
if isValidTag(tagName) {
|
||||
attrNames, htmlAttributes := sanitizeAttributes(baseURL, tagName, token.Attr)
|
||||
|
||||
if hasRequiredAttributes(tagName, attrNames) {
|
||||
|
@ -131,16 +133,18 @@ func Sanitize(baseURL, input string) string {
|
|||
}
|
||||
case html.EndTagToken:
|
||||
tagName := token.DataAtom.String()
|
||||
if isValidTag(tagName) && inList(tagName, tagStack) {
|
||||
buffer.WriteString(fmt.Sprintf("</%s>", tagName))
|
||||
if isValidTag(tagName) && slices.Contains(tagStack, tagName) {
|
||||
buffer.WriteString("</" + tagName + ">")
|
||||
} else if isBlockedTag(tagName) {
|
||||
blacklistedTagDepth--
|
||||
}
|
||||
case html.SelfClosingTagToken:
|
||||
tagName := token.DataAtom.String()
|
||||
if !isPixelTracker(tagName, token.Attr) && isValidTag(tagName) {
|
||||
if isPixelTracker(tagName, token.Attr) {
|
||||
continue
|
||||
}
|
||||
if isValidTag(tagName) {
|
||||
attrNames, htmlAttributes := sanitizeAttributes(baseURL, tagName, token.Attr)
|
||||
|
||||
if hasRequiredAttributes(tagName, attrNames) {
|
||||
if len(attrNames) > 0 {
|
||||
buffer.WriteString("<" + tagName + " " + htmlAttributes + "/>")
|
||||
|
@ -187,11 +191,10 @@ func sanitizeAttributes(baseURL, tagName string, attributes []html.Attribute) ([
|
|||
|
||||
if isExternalResourceAttribute(attribute.Key) {
|
||||
if tagName == "iframe" {
|
||||
if isValidIframeSource(baseURL, attribute.Val) {
|
||||
value = rewriteIframeURL(attribute.Val)
|
||||
} else {
|
||||
if !isValidIframeSource(baseURL, attribute.Val) {
|
||||
continue
|
||||
}
|
||||
value = rewriteIframeURL(attribute.Val)
|
||||
} else if tagName == "img" && attribute.Key == "src" && isValidDataAttribute(attribute.Val) {
|
||||
value = attribute.Val
|
||||
} else if isAnchor("a", attribute) {
|
||||
|
@ -248,7 +251,7 @@ func isValidTag(tagName string) bool {
|
|||
|
||||
func isValidAttribute(tagName, attributeName string) bool {
|
||||
if attributes, ok := tagAllowList[tagName]; ok {
|
||||
return inList(attributeName, attributes)
|
||||
return slices.Contains(attributes, attributeName)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
@ -263,26 +266,25 @@ func isExternalResourceAttribute(attribute string) bool {
|
|||
}
|
||||
|
||||
func isPixelTracker(tagName string, attributes []html.Attribute) bool {
|
||||
if tagName == "img" {
|
||||
if tagName != "img" {
|
||||
return false
|
||||
}
|
||||
hasHeight := false
|
||||
hasWidth := false
|
||||
|
||||
for _, attribute := range attributes {
|
||||
if attribute.Key == "height" && attribute.Val == "1" {
|
||||
if attribute.Val == "1" {
|
||||
if attribute.Key == "height" {
|
||||
hasHeight = true
|
||||
}
|
||||
|
||||
if attribute.Key == "width" && attribute.Val == "1" {
|
||||
} else if attribute.Key == "width" {
|
||||
hasWidth = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return hasHeight && hasWidth
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func hasRequiredAttributes(tagName string, attributes []string) bool {
|
||||
elements := map[string][]string{
|
||||
"a": {"href"},
|
||||
|
@ -371,43 +373,31 @@ func isBlockedResource(src string) bool {
|
|||
|
||||
func isValidIframeSource(baseURL, src string) bool {
|
||||
whitelist := []string{
|
||||
"//www.youtube.com",
|
||||
"http://www.youtube.com",
|
||||
"https://www.youtube.com",
|
||||
"https://www.youtube-nocookie.com",
|
||||
"http://player.vimeo.com",
|
||||
"https://player.vimeo.com",
|
||||
"http://www.dailymotion.com",
|
||||
"https://www.dailymotion.com",
|
||||
"http://vk.com",
|
||||
"https://vk.com",
|
||||
"http://soundcloud.com",
|
||||
"https://soundcloud.com",
|
||||
"http://w.soundcloud.com",
|
||||
"https://w.soundcloud.com",
|
||||
"http://bandcamp.com",
|
||||
"https://bandcamp.com",
|
||||
"https://cdn.embedly.com",
|
||||
"https://player.bilibili.com",
|
||||
"https://player.twitch.tv",
|
||||
"bandcamp.com",
|
||||
"cdn.embedly.com",
|
||||
"player.bilibili.com",
|
||||
"player.twitch.tv",
|
||||
"player.vimeo.com",
|
||||
"soundcloud.com",
|
||||
"vk.com",
|
||||
"w.soundcloud.com",
|
||||
"dailymotion.com",
|
||||
"youtube-nocookie.com",
|
||||
"youtube.com",
|
||||
}
|
||||
domain := urllib.Domain(src)
|
||||
|
||||
// allow iframe from same origin
|
||||
if urllib.Domain(baseURL) == urllib.Domain(src) {
|
||||
if urllib.Domain(baseURL) == domain {
|
||||
return true
|
||||
}
|
||||
|
||||
// allow iframe from custom invidious instance
|
||||
if config.Opts != nil && config.Opts.InvidiousInstance() == urllib.Domain(src) {
|
||||
if config.Opts != nil && config.Opts.InvidiousInstance() == domain {
|
||||
return true
|
||||
}
|
||||
|
||||
return slices.ContainsFunc(whitelist, func(prefix string) bool {
|
||||
return strings.HasPrefix(src, prefix)
|
||||
})
|
||||
}
|
||||
func inList(needle string, haystack []string) bool {
|
||||
return slices.Contains(haystack, needle)
|
||||
return slices.Contains(whitelist, strings.TrimPrefix(domain, "www."))
|
||||
}
|
||||
|
||||
func rewriteIframeURL(link string) string {
|
||||
|
|
|
@ -16,6 +16,25 @@ func TestMain(m *testing.M) {
|
|||
os.Exit(exitCode)
|
||||
}
|
||||
|
||||
func BenchmarkSanitize(b *testing.B) {
|
||||
var testCases = map[string][]string{
|
||||
"miniflux_github.html": {"https://github.com/miniflux/v2", ""},
|
||||
"miniflux_wikipedia.html": {"https://fr.wikipedia.org/wiki/Miniflux", ""},
|
||||
}
|
||||
for filename := range testCases {
|
||||
data, err := os.ReadFile("testdata/" + filename)
|
||||
if err != nil {
|
||||
b.Fatalf(`Unable to read file %q: %v`, filename, err)
|
||||
}
|
||||
testCases[filename][1] = string(data)
|
||||
}
|
||||
for range b.N {
|
||||
for _, v := range testCases {
|
||||
Sanitize(v[0], v[1])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidInput(t *testing.T) {
|
||||
input := `<p>This is a <strong>text</strong> with an image: <img src="http://example.org/" alt="Test" loading="lazy">.</p>`
|
||||
output := Sanitize("http://example.org/", input)
|
||||
|
|
2635
internal/reader/sanitizer/testdata/miniflux_github.html
vendored
Normal file
2635
internal/reader/sanitizer/testdata/miniflux_github.html
vendored
Normal file
File diff suppressed because one or more lines are too long
807
internal/reader/sanitizer/testdata/miniflux_wikipedia.html
vendored
Normal file
807
internal/reader/sanitizer/testdata/miniflux_wikipedia.html
vendored
Normal file
|
@ -0,0 +1,807 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-0 vector-feature-client-preferences-disabled vector-feature-client-prefs-pinned-disabled vector-feature-night-mode-disabled skin-night-mode-clientpref-0 vector-toc-available" lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Miniflux — Wikipédia</title>
|
||||
<script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-0 vector-feature-client-preferences-disabled vector-feature-client-prefs-pinned-disabled vector-feature-night-mode-disabled skin-night-mode-clientpref-0 vector-toc-available";var cookie=document.cookie.match(/(?:^|; )frwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],
|
||||
"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"wgRequestId":"22e3aa19-1dce-40a9-bbd5-d250c14d2223","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Miniflux","wgTitle":"Miniflux","wgCurRevisionId":204322562,"wgRevisionId":204322562,"wgArticleId":7063156,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Wikipédia:ébauche Internet","Article manquant de références depuis mars 2014","Article manquant de références/Liste complète","Page utilisant P348","Page utilisant P1324","Page utilisant P277","Logiciel catégorisé automatiquement par langage d'écriture","Article utilisant une Infobox","Article contenant un appel à traduction en anglais","Portail:Logiciels libres/Articles liés","Portail:Logiciel/Articles liés",
|
||||
"Portail:Informatique/Articles liés","Logiciel écrit en Go","Agrégateur","Application web"],"wgPageViewLanguage":"fr","wgPageContentLanguage":"fr","wgPageContentModel":"wikitext","wgRelevantPageName":"Miniflux","wgRelevantArticleId":7063156,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":4,"wgVisualEditor":{"pageLanguageCode":"fr","pageLanguageDir":"ltr","pageVariantFallbacks":"fr"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":2000,"wgULSCurrentAutonym":"français","wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":
|
||||
"Q16664605","wgCheckUserClientHintsHeadersJsApi":["architecture","bitness","brands","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"skins.vector.user.styles":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","skins.vector.user":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","codex-search-styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ArchiveLinks",
|
||||
"ext.gadget.Wdsearch","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.head","mmv.bootstrap.autostart","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession"];</script>
|
||||
<script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});
|
||||
}];});});</script>
|
||||
<link rel="stylesheet" href="/w/load.php?lang=fr&modules=codex-search-styles%7Cext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cskins.vector.icons%2Cstyles%7Cwikibase.client.init&only=styles&skin=vector-2022">
|
||||
<script async="" src="/w/load.php?lang=fr&modules=startup&only=scripts&raw=1&skin=vector-2022"></script>
|
||||
<meta name="ResourceLoaderDynamicStyles" content="">
|
||||
<link rel="stylesheet" href="/w/load.php?lang=fr&modules=site.styles&only=styles&skin=vector-2022">
|
||||
<meta name="generator" content="MediaWiki 1.42.0-wmf.20">
|
||||
<meta name="referrer" content="origin">
|
||||
<meta name="referrer" content="origin-when-cross-origin">
|
||||
<meta name="robots" content="max-image-preview:standard">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<meta name="viewport" content="width=1000">
|
||||
<meta property="og:title" content="Miniflux — Wikipédia">
|
||||
<meta property="og:type" content="website">
|
||||
<link rel="preconnect" href="//upload.wikimedia.org">
|
||||
<link rel="alternate" media="only screen and (max-width: 720px)" href="//fr.m.wikipedia.org/wiki/Miniflux">
|
||||
<link rel="alternate" type="application/x-wiki" title="Modifier" href="/w/index.php?title=Miniflux&action=edit">
|
||||
<link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png">
|
||||
<link rel="icon" href="/static/favicon/wikipedia.ico">
|
||||
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipédia (fr)">
|
||||
<link rel="EditURI" type="application/rsd+xml" href="//fr.wikipedia.org/w/api.php?action=rsd">
|
||||
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Miniflux">
|
||||
<link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">
|
||||
<link rel="alternate" type="application/atom+xml" title="Flux Atom de Wikipédia" href="/w/index.php?title=Sp%C3%A9cial:Modifications_r%C3%A9centes&feed=atom">
|
||||
<link rel="dns-prefetch" href="//meta.wikimedia.org" />
|
||||
<link rel="dns-prefetch" href="//login.wikimedia.org">
|
||||
</head>
|
||||
<body class="skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Miniflux rootpage-Miniflux skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Aller au contenu</a>
|
||||
<div class="vector-header-container">
|
||||
<header class="vector-header mw-header">
|
||||
<div class="vector-header-start">
|
||||
<nav class="vector-main-menu-landmark" aria-label="Site" role="navigation">
|
||||
|
||||
<div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" >
|
||||
<input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu principal" >
|
||||
<label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span>
|
||||
|
||||
<span class="vector-dropdown-label-text">Menu principal</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
|
||||
<div id="vector-main-menu-unpinned-container" class="vector-unpinned-container">
|
||||
|
||||
<div id="vector-main-menu" class="vector-main-menu vector-pinnable-element">
|
||||
<div
|
||||
class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned"
|
||||
data-feature-name="main-menu-pinned"
|
||||
data-pinnable-element-id="vector-main-menu"
|
||||
data-pinned-container-id="vector-main-menu-pinned-container"
|
||||
data-unpinned-container-id="vector-main-menu-unpinned-container"
|
||||
>
|
||||
<div class="vector-pinnable-header-label">Menu principal</div>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">déplacer vers la barre latérale</button>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">masquer</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" >
|
||||
<div class="vector-menu-heading">
|
||||
Navigation
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Accueil_principal" title="Accueil général [z]" accesskey="z"><span>Accueil</span></a></li><li id="n-thema" class="mw-list-item"><a href="/wiki/Portail:Accueil"><span>Portails thématiques</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Page_au_hasard" title="Affiche un article au hasard [x]" accesskey="x"><span>Article au hasard</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Contact"><span>Contact</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="p-Contribuer" class="vector-menu mw-portlet mw-portlet-Contribuer" >
|
||||
<div class="vector-menu-heading">
|
||||
Contribuer
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="n-aboutwp" class="mw-list-item"><a href="/wiki/Aide:D%C3%A9buter"><span>Débuter sur Wikipédia</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Aide:Accueil" title="Accès à l’aide"><span>Aide</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Accueil_de_la_communaut%C3%A9" title="À propos du projet, ce que vous pouvez faire, où trouver les informations"><span>Communauté</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Modifications_r%C3%A9centes" title="Liste des modifications récentes sur le wiki [r]" accesskey="r"><span>Modifications récentes</span></a></li><li id="n-sitesupport" class="mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_fr.wikipedia.org&uselang=fr" title="Soutenez-nous"><span>Faire un don</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="vector-main-menu-action vector-main-menu-action-lang-alert vector-main-menu-action-lang-alert-empty">
|
||||
<div class="vector-main-menu-action-item">
|
||||
<div class="vector-main-menu-action-heading vector-menu-heading">Langues</div>
|
||||
<div class="vector-main-menu-action-content vector-menu-content">
|
||||
<div class="mw-message-box cdx-message cdx-message--block mw-message-box-notice cdx-message--notice vector-language-sidebar-alert"><span class="cdx-message__icon"></span><div class="cdx-message__content">Sur cette version linguistique de Wikipédia, les liens interlangues sont placés en haut à droite du titre de l’article.<br /><a href="#p-lang-btn">Aller en haut</a>.</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<a href="/wiki/Wikip%C3%A9dia:Accueil_principal" class="mw-logo">
|
||||
<img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50">
|
||||
<span class="mw-logo-container">
|
||||
<img class="mw-logo-wordmark" alt="Wikipédia" src="/static/images/mobile/copyright/wikipedia-wordmark-fr.svg" style="width: 7.5em; height: 1.125em;">
|
||||
<img class="mw-logo-tagline" alt="l'encyclopédie libre" src="/static/images/mobile/copyright/wikipedia-tagline-fr.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;">
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="vector-header-end">
|
||||
|
||||
<div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box">
|
||||
<a href="/wiki/Sp%C3%A9cial:Recherche" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" id="" title="Rechercher sur Wikipédia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span>
|
||||
|
||||
<span>Rechercher</span>
|
||||
</a>
|
||||
<div class="vector-typeahead-search-container">
|
||||
<div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width">
|
||||
<form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button">
|
||||
<div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved">
|
||||
<div class="cdx-text-input cdx-text-input--has-start-icon">
|
||||
<input
|
||||
class="cdx-text-input__input"
|
||||
type="search" name="search" placeholder="Rechercher sur Wikipédia" aria-label="Rechercher sur Wikipédia" autocapitalize="sentences" title="Rechercher sur Wikipédia [f]" accesskey="f" id="searchInput"
|
||||
>
|
||||
<span class="cdx-text-input__icon cdx-text-input__start-icon"></span>
|
||||
</div>
|
||||
<input type="hidden" name="title" value="Spécial:Recherche">
|
||||
</div>
|
||||
<button class="cdx-button cdx-search-input__end-button">Rechercher</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="vector-user-links vector-user-links-wide" aria-label="Outils personnels" role="navigation" >
|
||||
<div class="vector-user-links-main">
|
||||
|
||||
<div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="vector-client-prefs-landmark" aria-label="Apparence">
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
<div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
<li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Sp%C3%A9cial:Cr%C3%A9er_un_compte&returnto=Miniflux" title="Nous vous encourageons à créer un compte utilisateur et vous connecter ; ce n’est cependant pas obligatoire." class=""><span>Créer un compte</span></a>
|
||||
</li>
|
||||
<li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Sp%C3%A9cial:Connexion&returnto=Miniflux" title="Nous vous encourageons à vous connecter ; ce n’est cependant pas obligatoire. [o]" accesskey="o" class=""><span>Se connecter</span></a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Plus d’options" >
|
||||
<input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Outils personnels" >
|
||||
<label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span>
|
||||
|
||||
<span class="vector-dropdown-label-text">Outils personnels</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
|
||||
|
||||
<div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu utilisateur" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Cr%C3%A9er_un_compte&returnto=Miniflux" title="Nous vous encourageons à créer un compte utilisateur et vous connecter ; ce n’est cependant pas obligatoire."><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Créer un compte</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Connexion&returnto=Miniflux" title="Nous vous encourageons à vous connecter ; ce n’est cependant pas obligatoire. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Se connecter</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" >
|
||||
<div class="vector-menu-heading">
|
||||
Pages pour les contributeurs déconnectés <a href="/wiki/Aide:Introduction" aria-label="En savoir plus sur la contribution"><span>en savoir plus</span></a>
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Mes_contributions" title="Une liste des modifications effectuées depuis cette adresse IP [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Mes_discussions" title="La page de discussion pour les contributions depuis cette adresse IP [n]" accesskey="n"><span>Discussion</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
</div>
|
||||
<div class="mw-page-container">
|
||||
<div class="mw-page-container-inner">
|
||||
<div class="vector-sitenotice-container">
|
||||
<div id="siteNotice"><!-- CentralNotice --></div>
|
||||
</div>
|
||||
<div class="vector-column-start">
|
||||
<div class="vector-main-menu-container">
|
||||
<div id="mw-navigation">
|
||||
<nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site" role="navigation">
|
||||
<div id="vector-main-menu-pinned-container" class="vector-pinned-container">
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vector-sticky-pinned-container">
|
||||
<nav id="mw-panel-toc" role="navigation" aria-label="Sommaire" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark">
|
||||
<div id="vector-toc-pinned-container" class="vector-pinned-container">
|
||||
<div id="vector-toc" class="vector-toc vector-pinnable-element">
|
||||
<div
|
||||
class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned"
|
||||
data-feature-name="toc-pinned"
|
||||
data-pinnable-element-id="vector-toc"
|
||||
|
||||
|
||||
>
|
||||
<h2 class="vector-pinnable-header-label">Sommaire</h2>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">déplacer vers la barre latérale</button>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">masquer</button>
|
||||
</div>
|
||||
|
||||
|
||||
<ul class="vector-toc-contents" id="mw-panel-toc-list">
|
||||
<li id="toc-mw-content-text"
|
||||
class="vector-toc-list-item vector-toc-level-1">
|
||||
<a href="#" class="vector-toc-link">
|
||||
<div class="vector-toc-text">Début</div>
|
||||
</a>
|
||||
</li>
|
||||
<li id="toc-Caractéristiques"
|
||||
class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded">
|
||||
<a class="vector-toc-link" href="#Caractéristiques">
|
||||
<div class="vector-toc-text">
|
||||
<span class="vector-toc-numb">1</span>Caractéristiques</div>
|
||||
</a>
|
||||
|
||||
<ul id="toc-Caractéristiques-sublist" class="vector-toc-list">
|
||||
</ul>
|
||||
</li>
|
||||
<li id="toc-Liens_externes"
|
||||
class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded">
|
||||
<a class="vector-toc-link" href="#Liens_externes">
|
||||
<div class="vector-toc-text">
|
||||
<span class="vector-toc-numb">2</span>Liens externes</div>
|
||||
</a>
|
||||
|
||||
<ul id="toc-Liens_externes-sublist" class="vector-toc-list">
|
||||
</ul>
|
||||
</li>
|
||||
<li id="toc-Notes_et_références"
|
||||
class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded">
|
||||
<a class="vector-toc-link" href="#Notes_et_références">
|
||||
<div class="vector-toc-text">
|
||||
<span class="vector-toc-numb">3</span>Notes et références</div>
|
||||
</a>
|
||||
|
||||
<ul id="toc-Notes_et_références-sublist" class="vector-toc-list">
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mw-content-container">
|
||||
<main id="content" class="mw-body" role="main">
|
||||
<header class="mw-body-header vector-page-titlebar">
|
||||
<nav role="navigation" aria-label="Sommaire" class="vector-toc-landmark">
|
||||
|
||||
<div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" >
|
||||
<input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Basculer la table des matières" >
|
||||
<label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span>
|
||||
|
||||
<span class="vector-dropdown-label-text">Basculer la table des matières</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
|
||||
<div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Miniflux</span></h1>
|
||||
|
||||
<div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" >
|
||||
<input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Cet article n’existe que dans cette langue. Ajouter l’article pour d’autres langues." >
|
||||
<label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span>
|
||||
|
||||
<span class="vector-dropdown-label-text">Ajouter des langues</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
|
||||
</ul>
|
||||
<div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span><span class="wb-langlinks-add wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q16664605#sitelinks-wikipedia" title="Ajouter des liens interlangues" class="wbc-editpage">Ajouter des liens</a></span></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="vector-page-toolbar">
|
||||
<div class="vector-page-toolbar-container">
|
||||
<div id="left-navigation">
|
||||
<nav aria-label="Espaces de noms">
|
||||
|
||||
<div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Miniflux" title="Voir le contenu de la page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="new vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discussion:Miniflux&action=edit&redlink=1" rel="discussion" title="Discussion au sujet de cette page de contenu (page inexistante) [t]" accesskey="t"><span>Discussion</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="p-variants" class="vector-dropdown emptyPortlet" >
|
||||
<input type="checkbox" id="p-variants-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-variants" class="vector-dropdown-checkbox " aria-label="Modifier la variante de langue" >
|
||||
<label id="p-variants-label" for="p-variants-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">français</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
|
||||
|
||||
<div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
<div id="right-navigation" class="vector-collapsible">
|
||||
<nav aria-label="Affichages">
|
||||
|
||||
<div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" >
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Miniflux"><span>Lire</span></a></li><li id="ca-ve-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Miniflux&veaction=edit" title="Modifier cette page [v]" accesskey="v"><span>Modifier</span></a></li><li id="ca-edit" class="collapsible vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Miniflux&action=edit" title="Modifier le wikicode de cette page [e]" accesskey="e"><span>Modifier le code</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Miniflux&action=history" title="Historique des versions de cette page [h]" accesskey="h"><span>Voir l’historique</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<nav class="vector-page-tools-landmark" aria-label="Outils de la page">
|
||||
|
||||
<div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" >
|
||||
<input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Outils" >
|
||||
<label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Outils</span>
|
||||
</label>
|
||||
<div class="vector-dropdown-content">
|
||||
|
||||
|
||||
<div id="vector-page-tools-unpinned-container" class="vector-unpinned-container">
|
||||
|
||||
<div id="vector-page-tools" class="vector-page-tools vector-pinnable-element">
|
||||
<div
|
||||
class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned"
|
||||
data-feature-name="page-tools-pinned"
|
||||
data-pinnable-element-id="vector-page-tools"
|
||||
data-pinned-container-id="vector-page-tools-pinned-container"
|
||||
data-unpinned-container-id="vector-page-tools-unpinned-container"
|
||||
>
|
||||
<div class="vector-pinnable-header-label">Outils</div>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">déplacer vers la barre latérale</button>
|
||||
<button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">masquer</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Plus d’options" >
|
||||
<div class="vector-menu-heading">
|
||||
Actions
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Miniflux"><span>Lire</span></a></li><li id="ca-more-ve-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Miniflux&veaction=edit" title="Modifier cette page [v]" accesskey="v"><span>Modifier</span></a></li><li id="ca-more-edit" class="collapsible vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Miniflux&action=edit" title="Modifier le wikicode de cette page [e]" accesskey="e"><span>Modifier le code</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Miniflux&action=history"><span>Voir l’historique</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" >
|
||||
<div class="vector-menu-heading">
|
||||
Général
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Pages_li%C3%A9es/Miniflux" title="Liste des pages liées qui pointent sur celle-ci [j]" accesskey="j"><span>Pages liées</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Suivi_des_liens/Miniflux" rel="nofollow" title="Liste des modifications récentes des pages appelées par celle-ci [k]" accesskey="k"><span>Suivi des pages liées</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Aide:Importer_un_fichier" title="Téléverser des fichiers [u]" accesskey="u"><span>Téléverser un fichier</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Sp%C3%A9cial:Pages_sp%C3%A9ciales" title="Liste de toutes les pages spéciales [q]" accesskey="q"><span>Pages spéciales</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Miniflux&oldid=204322562" title="Adresse permanente de cette version de cette page"><span>Lien permanent</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Miniflux&action=info" title="Davantage d’informations sur cette page"><span>Informations sur la page</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Citer&page=Miniflux&id=204322562&wpFormIdentifier=titleform" title="Informations sur la manière de citer cette page"><span>Citer cette page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:UrlShortener&url=https%3A%2F%2Ffr.wikipedia.org%2Fwiki%2FMiniflux"><span>Obtenir l'URL raccourcie</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:QrCode&url=https%3A%2F%2Ffr.wikipedia.org%2Fwiki%2FMiniflux"><span>Télécharger le code QR</span></a></li><li id="t-wikibase" class="mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q16664605" title="Lien vers l’élément dans le dépôt de données connecté [g]" accesskey="g"><span>Élément Wikidata</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" >
|
||||
<div class="vector-menu-heading">
|
||||
Imprimer / exporter
|
||||
</div>
|
||||
<div class="vector-menu-content">
|
||||
|
||||
<ul class="vector-menu-content-list">
|
||||
|
||||
<li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:Livre&bookcmd=book_creator&referer=Miniflux"><span>Créer un livre</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Sp%C3%A9cial:DownloadAsPdf&page=Miniflux&action=show-download-screen"><span>Télécharger comme PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Miniflux&printable=yes" title="Version imprimable de cette page [p]" accesskey="p"><span>Version imprimable</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vector-column-end">
|
||||
<div class="vector-sticky-pinned-container">
|
||||
<nav class="vector-page-tools-landmark" aria-label="Outils de la page">
|
||||
<div id="vector-page-tools-pinned-container" class="vector-pinned-container">
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
<nav class="vector-client-prefs-landmark" aria-label="Apparence">
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container>
|
||||
<div class="vector-body-before-content">
|
||||
<div class="mw-indicators">
|
||||
</div>
|
||||
|
||||
<div id="siteSub" class="noprint">Un article de Wikipédia, l'encyclopédie libre.</div>
|
||||
</div>
|
||||
<div id="contentSub"><div id="mw-content-subtitle"></div></div>
|
||||
|
||||
|
||||
<div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><div class="bandeau-container metadata bandeau-article bandeau-niveau-ebauche"><div class="bandeau-cell bandeau-icone" style="display:table-cell;padding-right:0.5em"><span class="noviewer" typeof="mw:File"><a href="/wiki/Fichier:Circle-icons-email.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Circle-icons-email.svg/35px-Circle-icons-email.svg.png" decoding="async" width="35" height="35" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Circle-icons-email.svg/53px-Circle-icons-email.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d0/Circle-icons-email.svg/70px-Circle-icons-email.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></div><div class="bandeau-cell" style="display:table-cell;padding-right:0.5em">
|
||||
<p><strong class="bandeau-titre">Cet article est une <a href="/wiki/Aide:%C3%89bauche" title="Aide:Ébauche">ébauche</a> concernant <a href="/wiki/Internet" title="Internet">Internet</a>.</strong>
|
||||
</p><p>Vous pouvez partager vos connaissances en l’améliorant (<b><a href="/wiki/Aide:Comment_modifier_une_page" title="Aide:Comment modifier une page">comment ?</a></b>) selon les recommandations des <a href="/wiki/Projet:Accueil" title="Projet:Accueil">projets correspondants</a>.
|
||||
</p>
|
||||
</div></div>
|
||||
<div class="bandeau-container metadata bandeau-article bandeau-niveau-modere"><figure class="mw-halign-right noviewer" typeof="mw:File"><a href="/wiki/Mod%C3%A8le:Sources_secondaires" title="Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus."><img alt="Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus." src="//upload.wikimedia.org/wikipedia/commons/thumb/3/38/Info_Simple.svg/12px-Info_Simple.svg.png" decoding="async" width="12" height="12" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/38/Info_Simple.svg/18px-Info_Simple.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/38/Info_Simple.svg/24px-Info_Simple.svg.png 2x" data-file-width="512" data-file-height="512" /></a><figcaption>Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.</figcaption></figure><div class="bandeau-cell bandeau-icone" style="display:table-cell;padding-right:0.5em"><span class="noviewer" typeof="mw:File"><a href="/wiki/Fichier:2017-fr.wp-orange-source.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/a/a1/2017-fr.wp-orange-source.svg/45px-2017-fr.wp-orange-source.svg.png" decoding="async" width="45" height="45" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a1/2017-fr.wp-orange-source.svg/68px-2017-fr.wp-orange-source.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a1/2017-fr.wp-orange-source.svg/90px-2017-fr.wp-orange-source.svg.png 2x" data-file-width="512" data-file-height="512" /></a></span></div><div class="bandeau-cell" style="display:table-cell;padding-right:0.5em">
|
||||
<p><strong class="bandeau-titre">Cet article ne s'appuie pas, ou pas assez, sur des sources <a href="/wiki/Wikip%C3%A9dia:Sources_primaires,_secondaires_et_tertiaires" title="Wikipédia:Sources primaires, secondaires et tertiaires">secondaires ou tertiaires</a></strong> <small>(<time class="nowrap" datetime="2014-03" data-sort-value="2014-03">mars 2014</time>).</small>
|
||||
</p><p>Pour améliorer la <a href="/wiki/Wikip%C3%A9dia:V%C3%A9rifiabilit%C3%A9" title="Wikipédia:Vérifiabilité">vérifiabilité</a> de l'article ainsi que <a href="/wiki/Wikip%C3%A9dia:Ce_que_Wikip%C3%A9dia_n%27est_pas#Un_annuaire_ou_une_base_de_données" title="Wikipédia:Ce que Wikipédia n'est pas">son intérêt encyclopédique</a>, il est nécessaire, quand des <a href="/wiki/Wikip%C3%A9dia:Sources_primaires,_secondaires_et_tertiaires" title="Wikipédia:Sources primaires, secondaires et tertiaires">sources primaires</a> sont citées, de les associer à des analyses faites par des sources secondaires.
|
||||
</p>
|
||||
</div></div>
|
||||
<div class="infobox_v3 noarchive">
|
||||
<div class="entete icon informatique" style="color: #000000;"><style data-mw-deduplicate="TemplateStyles:r188801372">.mw-parser-output .entete.informatique{background-image:url("//upload.wikimedia.org/wikipedia/commons/a/ae/Picto-infoboxinfo.png")}</style>
|
||||
<div>Miniflux</div>
|
||||
</div>
|
||||
<p class="mw-empty-elt">
|
||||
|
||||
|
||||
</p>
|
||||
<table><caption style="color:#000000;">Informations</caption>
|
||||
|
||||
|
||||
|
||||
<tbody><tr>
|
||||
<th scope="row"><a href="/wiki/D%C3%A9veloppeur" title="Développeur">Développé par</a></th>
|
||||
<td>
|
||||
Frédéric Guillot</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"> <a href="/wiki/Version_d%27un_logiciel" title="Version d'un logiciel">Dernière version</a>
|
||||
</th>
|
||||
<td>
|
||||
<span class="wd_p348">2.1.0 (<time class="nowrap" datetime="2024-02-17" data-sort-value="2024-02-17">17 février 2024</time>)<sup id="cite_ref-wikidata-f2992d0f89b91ee9578634940004e13779ead67d_1-0" class="reference"><a href="#cite_note-wikidata-f2992d0f89b91ee9578634940004e13779ead67d-1"><span class="cite_crochet">[</span>1<span class="cite_crochet">]</span></a></sup><span class="noprint wikidata-linkback"><span class="mw-valign-baseline noviewer" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q16664605?uselang=fr#P348" title="Voir et modifier les données sur Wikidata"><img alt="Voir et modifier les données sur Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></span></span></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"><a href="/wiki/D%C3%A9p%C3%B4t_(informatique)" title="Dépôt (informatique)">Dépôt</a></th>
|
||||
<td>
|
||||
<span class="wd_p1324"><a rel="nofollow" class="external text" href="https://github.com/miniflux/miniflux">github.com/miniflux/miniflux</a><span class="noprint wikidata-linkback"><span class="mw-valign-baseline noviewer" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q16664605?uselang=fr#P1324" title="Voir et modifier les données sur Wikidata"><img alt="Voir et modifier les données sur Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></span></span></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"> <a href="/wiki/Langage_de_programmation" title="Langage de programmation">Écrit en</a>
|
||||
</th>
|
||||
<td>
|
||||
<span class="wd_p277"><a href="/wiki/Go_(langage)" title="Go (langage)">Go</a><span class="noprint wikidata-linkback"><span class="mw-valign-baseline noviewer" typeof="mw:File"><a href="https://www.wikidata.org/wiki/Q16664605?uselang=fr#P277" title="Voir et modifier les données sur Wikidata"><img alt="Voir et modifier les données sur Wikidata" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/10px-Blue_pencil.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/15px-Blue_pencil.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/73/Blue_pencil.svg/20px-Blue_pencil.svg.png 2x" data-file-width="600" data-file-height="600" /></a></span></span></span></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"><a href="/wiki/Plate-forme_(informatique)" title="Plate-forme (informatique)">Environnement</a></th>
|
||||
<td>
|
||||
<a href="/wiki/Logiciel_multiplate-forme" class="mw-redirect" title="Logiciel multiplate-forme">multiplateforme</a></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"><a href="/wiki/Internationalisation_(informatique)" title="Internationalisation (informatique)">Langues</a></th>
|
||||
<td>
|
||||
<a href="/wiki/Multilingue" class="mw-redirect" title="Multilingue">Multilingue</a></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="row"> Type
|
||||
</th>
|
||||
<td>
|
||||
<a href="/wiki/RSS" title="RSS">agrégateur de RSS</a></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"><a href="/wiki/Licence_de_logiciel" title="Licence de logiciel">Licence</a></th>
|
||||
<td>
|
||||
<a href="/wiki/AGPL" class="mw-redirect" title="AGPL">Licence AGPL</a></td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<th scope="row"><a href="/wiki/Site_web" title="Site web">Site web</a></th>
|
||||
<td>
|
||||
<a rel="nofollow" class="external text" href="http://miniflux.net/">miniflux.net</a></td>
|
||||
</tr>
|
||||
|
||||
</tbody></table>
|
||||
<p class="mw-empty-elt">
|
||||
|
||||
</p>
|
||||
<p class="navbar bordered noprint" style=""><span class="plainlinks"><a class="external text" href="https://fr.wikipedia.org/w/index.php?title=Miniflux&veaction=edit&section=0">modifier</a> - <a class="external text" href="https://fr.wikipedia.org/w/index.php?title=Miniflux&action=edit&section=0">modifier le code</a> - <a href="https://www.wikidata.org/wiki/Special:ItemByTitle/frwiki/Miniflux" class="extiw" title="d:Special:ItemByTitle/frwiki/Miniflux">voir Wikidata</a> <a href="/wiki/Aide:Infobox_Wikidata" title="Aide:Infobox Wikidata">(aide)</a></span> <span typeof="mw:File"><a href="/wiki/Mod%C3%A8le:Infobox_Logiciel" title="Consultez la documentation du modèle"><img alt="Consultez la documentation du modèle" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Gtk-dialog-info.svg/12px-Gtk-dialog-info.svg.png" decoding="async" width="12" height="12" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Gtk-dialog-info.svg/18px-Gtk-dialog-info.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Gtk-dialog-info.svg/24px-Gtk-dialog-info.svg.png 2x" data-file-width="60" data-file-height="60" /></a></span></p></div>
|
||||
<p><b>Miniflux</b> est un agrégateur de flux <a href="/wiki/RSS" title="RSS">RSS</a> minimaliste. C'est une <a href="/wiki/Application_web" title="Application web">application web</a> <a href="/wiki/Logiciel_libre" title="Logiciel libre">libre</a> diffusé sous licence <a href="/wiki/AGPL" class="mw-redirect" title="AGPL">AGPL</a>.
|
||||
Ce logiciel est prévu pour être <a href="/wiki/Auto-h%C3%A9bergement_(Internet)" title="Auto-hébergement (Internet)">auto-hébergé</a> sur son propre serveur ou sur un hébergement mutualisé.
|
||||
</p>
|
||||
<h2><span id="Caract.C3.A9ristiques"></span><span class="mw-headline" id="Caractéristiques">Caractéristiques</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Miniflux&veaction=edit&section=1" title="Modifier la section : Caractéristiques" class="mw-editsection-visualeditor"><span>modifier</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Miniflux&action=edit&section=1" title="Modifier le code source de la section : Caractéristiques"><span>modifier le code</span></a><span class="mw-editsection-bracket">]</span></span></h2>
|
||||
<ul><li>Mises à jour : il est possible de mettre à jour ses abonnements depuis une tâche planifiée (<a href="/wiki/Cron" title="Cron">cronjob</a>) ou depuis l'interface web (<a href="/wiki/Ajax_(informatique)" title="Ajax (informatique)">Ajax</a>). De plus, Miniflux vérifie les en-têtes <a href="/wiki/HTTP" class="mw-redirect" title="HTTP">HTTP</a> et met à jour les flux uniquement lorsque c'est nécessaire.</li>
|
||||
<li>Réseaux sociaux : Miniflux ne s'intègre pas avec les réseaux sociaux, il n'y a donc aucune forme de partage, d'envoi par email ou encore de système de favoris.</li>
|
||||
<li>Publicité : les publicités dans les abonnements sont supprimées automatiquement ainsi que tout éventuel "<a href="/wiki/Pixel_espion" title="Pixel espion">pixel espion</a>" (image de 1px sur 1px utilisée par les outils de statistiques). De plus, les liens externes ne transmettent pas le <a href="/wiki/R%C3%A9f%C3%A9rent_(informatique)" title="Référent (informatique)">référent</a> (l'<a href="/wiki/Uniform_Resource_Locator" title="Uniform Resource Locator">adresse web</a> d'où l'utilisateur vient).</li>
|
||||
<li>Données personnelles : Miniflux est compatible avec le format <a href="/wiki/OPML" class="mw-redirect" title="OPML">OPML</a> qui permet d'importer ou d'exporter sa liste d'abonnements.</li>
|
||||
<li>Accessibilité : une fois installé, Miniflux est accessible à la manière d'une <a href="/wiki/Application_web" title="Application web">application web</a> depuis n'importe quel navigateur web et ce même sur les appareils mobiles.</li>
|
||||
<li><a href="/wiki/Interface_de_programmation" title="Interface de programmation">Interface de programmation</a>: Le logiciel intègre une interface de programmation de sorte à voir créer des scripts afin d'automatiser certaines tâches comme la création d'un utilisateur, de récupérer des statistiques ou encore de récupérer des données concernant son flux ou ses abonnements<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite_crochet">[</span>2<span class="cite_crochet">]</span></a></sup>.</li></ul>
|
||||
<h2><span class="mw-headline" id="Liens_externes">Liens externes</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Miniflux&veaction=edit&section=2" title="Modifier la section : Liens externes" class="mw-editsection-visualeditor"><span>modifier</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Miniflux&action=edit&section=2" title="Modifier le code source de la section : Liens externes"><span>modifier le code</span></a><span class="mw-editsection-bracket">]</span></span></h2>
|
||||
<ul><li><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://miniflux.net/">Site officiel en anglais</a></li></ul>
|
||||
<h2><span id="Notes_et_r.C3.A9f.C3.A9rences"></span><span class="mw-headline" id="Notes_et_références">Notes et références</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Miniflux&veaction=edit&section=3" title="Modifier la section : Notes et références" class="mw-editsection-visualeditor"><span>modifier</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Miniflux&action=edit&section=3" title="Modifier le code source de la section : Notes et références"><span>modifier le code</span></a><span class="mw-editsection-bracket">]</span></span></h2>
|
||||
<div class="references-small decimal" style=""><div class="mw-references-wrap"><ol class="references">
|
||||
<li id="cite_note-wikidata-f2992d0f89b91ee9578634940004e13779ead67d-1"><span class="mw-cite-backlink noprint"><a href="#cite_ref-wikidata-f2992d0f89b91ee9578634940004e13779ead67d_1-0">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://github.com/miniflux/v2/releases/tag/2.1.0"><cite style="font-style:normal;"><span class="lang-en" lang="en">Release 2.1.0</span></cite></a> », <time class="nowrap" datetime="2024-02-17" data-sort-value="2024-02-17">17 février 2024</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2024-02-20" data-sort-value="2024-02-20">20 février 2024</time>)</small></span></span>
|
||||
</li>
|
||||
<li id="cite_note-2"><span class="mw-cite-backlink noprint"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage">« <a rel="nofollow" class="external text" href="https://miniflux.app/docs/api.html"><cite style="font-style:normal;">API Reference - Documentation</cite></a> », sur <span class="italique">miniflux.app</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2020-06-26" data-sort-value="2020-06-26">26 juin 2020</time>)</small></span></span>
|
||||
</li>
|
||||
</ol></div>
|
||||
</div>
|
||||
<div class="navbox-container" style="clear:both;">
|
||||
<table class="navbox collapsible noprint autocollapse" style="">
|
||||
<tbody><tr><th class="navbox-title" colspan="3" style=""><div style="float:left; width:6em; text-align:left"><div class="noprint plainlinks nowrap tnavbar" style="background-color:transparent; padding:0; font-size:xx-small; color:#000000;"><a href="/wiki/Mod%C3%A8le:Palette_Agr%C3%A9gateurs" title="Modèle:Palette Agrégateurs"><abbr class="abbr" title="Voir ce modèle.">v</abbr></a> · <a class="external text" href="https://fr.wikipedia.org/w/index.php?title=Mod%C3%A8le:Palette_Agr%C3%A9gateurs&action=edit"><abbr class="abbr" title="Modifier ce modèle. Merci de prévisualiser avant de sauvegarder.">m</abbr></a></div></div><div style="font-size:110%"><a href="/wiki/Agr%C3%A9gateur" title="Agrégateur">Agrégateurs</a></div></th>
|
||||
</tr> <tr>
|
||||
<th class="navbox-group" style=""><a href="/wiki/Client_lourd" title="Client lourd">Clients de bureau</a></th>
|
||||
<td class="navbox-list" style=""><table class="navbox-subgroup" style="">
|
||||
<tbody><tr>
|
||||
<th class="navbox-group" style="width:10px; white-space:nowrap;"><a href="/wiki/Logiciel_libre" title="Logiciel libre">Libre</a></th>
|
||||
<td class="navbox-list" style=";background:#EDEDFF;"><div class="liste-horizontale">
|
||||
<ul><li><i><a href="/wiki/Akregator" title="Akregator">Akregator</a></i></li>
|
||||
<li><span class="description-wikidata" title="<span class="error">identifiant wikidata inconnu</span>"><a href="/w/index.php?title=%27%27FeedReader%27%27&action=edit&redlink=1" class="new" title="''FeedReader'' (page inexistante)"><i>FeedReader</i></a> <a href="https://www.wikidata.org/wiki/Q50836189" class="extiw" title="d:Q50836189"><span class="indicateur-langue">(<abbr class="abbr" title="Wikidata">d</abbr>)</span></a> <span typeof="mw:File"><a href="//tools.wmflabs.org/reasonator/?q=Q50836189&lang=fr" title="Voir avec Reasonator"><img alt="Voir avec Reasonator" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Wikidata-Reasonator_small_logo.svg/12px-Wikidata-Reasonator_small_logo.svg.png" decoding="async" width="12" height="12" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Wikidata-Reasonator_small_logo.svg/18px-Wikidata-Reasonator_small_logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Wikidata-Reasonator_small_logo.svg/24px-Wikidata-Reasonator_small_logo.svg.png 2x" data-file-width="500" data-file-height="500" /></a></span></span></li>
|
||||
<li><i><a href="/wiki/Liferea" title="Liferea">Liferea</a></i></li>
|
||||
<li><i><a href="/wiki/Mozilla_Thunderbird" title="Mozilla Thunderbird">Mozilla Thunderbird</a></i></li>
|
||||
<li><i>QuiteRSS</i></li>
|
||||
<li><i><a href="/wiki/GNOME_Web" title="GNOME Web">Web</a></i></li>
|
||||
<li><i><a href="/wiki/QBittorrent" title="QBittorrent">QBittorrent</a></i></li>
|
||||
<li><i>RSSOwl</i></li>
|
||||
<li><i><a href="/wiki/Zimbra" title="Zimbra">Zimbra</a></i></li></ul>
|
||||
</div></td>
|
||||
</tr> <tr>
|
||||
<th class="navbox-group" style="width:10px; white-space:nowrap;"><a href="/wiki/Logiciel_propri%C3%A9taire" title="Logiciel propriétaire">Propriétaire</a></th>
|
||||
<td class="navbox-list navbox-even" style=";"><div class="liste-horizontale">
|
||||
<ul><li><i><a href="/wiki/Microsoft_Outlook" title="Microsoft Outlook">Microsoft Outlook</a></i></li></ul>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
</tbody></table></td>
|
||||
<td class="navbox-image" rowspan="2" style="vertical-align:middle;padding-left:7px"><span class="noviewer" typeof="mw:File"><a href="/wiki/Fichier:Feed-icon.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/70px-Feed-icon.svg.png" decoding="async" width="70" height="70" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/105px-Feed-icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/140px-Feed-icon.svg.png 2x" data-file-width="128" data-file-height="128" /></a></span></td>
|
||||
</tr> <tr>
|
||||
<th class="navbox-group" style="">Basés sur le <a href="/wiki/Web" class="mw-redirect" title="Web">web</a></th>
|
||||
<td class="navbox-list navbox-even" style=""><table class="navbox-subgroup" style="">
|
||||
<tbody><tr>
|
||||
<th class="navbox-group" style="width:10px; white-space:nowrap;"><a href="/wiki/Logiciel_libre" title="Logiciel libre">Libre</a></th>
|
||||
<td class="navbox-list" style=";background:#EDEDFF;"><div class="liste-horizontale">
|
||||
<ul><li><i><a href="/w/index.php?title=Feedbin&action=edit&redlink=1" class="new" title="Feedbin (page inexistante)">Feedbin</a> <a href="https://en.wikipedia.org/wiki/Feedbin" class="extiw" title="en:Feedbin"><span class="indicateur-langue" title="Article en anglais : « Feedbin »">(en)</span></a></i></li>
|
||||
<li><i><a href="/wiki/FreshRSS" title="FreshRSS">FreshRSS</a></i></li>
|
||||
<li><i><a href="/wiki/KrISS-feed" title="KrISS-feed">KrISS-feed</a></i></li>
|
||||
<li><i>Leed</i></li>
|
||||
<li><i>Selfoss</i></li>
|
||||
<li><i><a href="/wiki/NewsBlur" title="NewsBlur">NewsBlur</a></i></li>
|
||||
<li><i>Cartulary</i></li>
|
||||
<li><i><a class="mw-selflink selflink">Miniflux</a></i></li>
|
||||
<li><i><a href="/wiki/Tiny_Tiny_RSS" title="Tiny Tiny RSS">Tiny Tiny RSS</a></i></li></ul>
|
||||
</div></td>
|
||||
</tr> <tr>
|
||||
<th class="navbox-group" style="width:10px; white-space:nowrap;"><a href="/wiki/Logiciel_propri%C3%A9taire" title="Logiciel propriétaire">Propriétaire</a></th>
|
||||
<td class="navbox-list navbox-even" style=";"><div class="liste-horizontale">
|
||||
<ul><li><i><a href="/wiki/Feedly" title="Feedly">Feedly</a></i></li>
|
||||
<li><i><a href="/wiki/Inoreader" title="Inoreader">Inoreader</a></i></li>
|
||||
<li><i><a href="/wiki/Netvibes" title="Netvibes">Netvibes</a></i></li></ul>
|
||||
</div></td>
|
||||
</tr>
|
||||
|
||||
</tbody></table></td>
|
||||
</tr> </tbody></table>
|
||||
</div><p>,
|
||||
</p><ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"><a href="/wiki/Portail:Logiciels_libres" title="Portail des logiciels libres"><img alt="icône décorative" src="//upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/25px-Heckert_GNU_white.svg.png" decoding="async" width="25" height="24" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/37px-Heckert_GNU_white.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/49px-Heckert_GNU_white.svg.png 2x" data-file-width="535" data-file-height="523" /></a></span></span> <span class="bandeau-portail-texte"><a href="/wiki/Portail:Logiciels_libres" title="Portail:Logiciels libres">Portail des logiciels libres</a></span> </span></li> </ul>
|
||||
<!--
|
||||
NewPP limit report
|
||||
Parsed by mw‐web.eqiad.canary‐7c9994f4f8‐6g6bc
|
||||
Cached time: 20240304111906
|
||||
Cache expiry: 2592000
|
||||
Reduced expiry: false
|
||||
Complications: []
|
||||
CPU time usage: 0.369 seconds
|
||||
Real time usage: 0.494 seconds
|
||||
Preprocessor visited node count: 3432/1000000
|
||||
Post‐expand include size: 58705/2097152 bytes
|
||||
Template argument size: 16628/2097152 bytes
|
||||
Highest expansion depth: 21/100
|
||||
Expensive parser function count: 6/500
|
||||
Unstrip recursion depth: 0/20
|
||||
Unstrip post‐expand size: 2070/5000000 bytes
|
||||
Lua time usage: 0.226/10.000 seconds
|
||||
Lua memory usage: 10407160/52428800 bytes
|
||||
Number of Wikibase entities loaded: 1/400
|
||||
-->
|
||||
<!--
|
||||
Transclusion expansion time report (%,ms,calls,template)
|
||||
100.00% 449.099 1 -total
|
||||
52.56% 236.049 45 Modèle:Wikidata
|
||||
52.35% 235.089 1 Modèle:Infobox_Logiciel
|
||||
34.76% 156.108 23 Modèle:Infobox_V3/Tableau_Ligne_mixte
|
||||
21.42% 96.191 1 Modèle:Ébauche
|
||||
11.91% 53.472 1 Modèle:Palette
|
||||
10.43% 46.825 1 Modèle:Palette_Agrégateurs
|
||||
9.96% 44.723 1 Modèle:Méta_palette_de_navigation
|
||||
8.15% 36.590 13 Modèle:Infobox_V3/Tableau_Ligne_mixte_Wikidata
|
||||
8.02% 36.009 2 Modèle:Méta_palette_de_navigation_sous-groupe
|
||||
-->
|
||||
|
||||
<!-- Saved in parser cache with key frwiki:pcache:idhash:7063156-0!canonical and timestamp 20240304111906 and revision id 204322562. Rendering was triggered because: page-view
|
||||
-->
|
||||
</div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript>
|
||||
<div class="printfooter" data-nosnippet="">Ce document provient de « <a dir="ltr" href="https://fr.wikipedia.org/w/index.php?title=Miniflux&oldid=204322562">https://fr.wikipedia.org/w/index.php?title=Miniflux&oldid=204322562</a> ».</div></div>
|
||||
<div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Cat%C3%A9gorie:Accueil" title="Catégorie:Accueil">Catégories</a> : <ul><li><a href="/wiki/Cat%C3%A9gorie:Logiciel_%C3%A9crit_en_Go" title="Catégorie:Logiciel écrit en Go">Logiciel écrit en Go</a></li><li><a href="/wiki/Cat%C3%A9gorie:Agr%C3%A9gateur" title="Catégorie:Agrégateur">Agrégateur</a></li><li><a href="/wiki/Cat%C3%A9gorie:Application_web" title="Catégorie:Application web">Application web</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Catégories cachées : <ul><li><a href="/wiki/Cat%C3%A9gorie:Wikip%C3%A9dia:%C3%A9bauche_Internet" title="Catégorie:Wikipédia:ébauche Internet">Wikipédia:ébauche Internet</a></li><li><a href="/wiki/Cat%C3%A9gorie:Article_manquant_de_r%C3%A9f%C3%A9rences_depuis_mars_2014" title="Catégorie:Article manquant de références depuis mars 2014">Article manquant de références depuis mars 2014</a></li><li><a href="/wiki/Cat%C3%A9gorie:Article_manquant_de_r%C3%A9f%C3%A9rences/Liste_compl%C3%A8te" title="Catégorie:Article manquant de références/Liste complète">Article manquant de références/Liste complète</a></li><li><a href="/wiki/Cat%C3%A9gorie:Page_utilisant_P348" title="Catégorie:Page utilisant P348">Page utilisant P348</a></li><li><a href="/wiki/Cat%C3%A9gorie:Page_utilisant_P1324" title="Catégorie:Page utilisant P1324">Page utilisant P1324</a></li><li><a href="/wiki/Cat%C3%A9gorie:Page_utilisant_P277" title="Catégorie:Page utilisant P277">Page utilisant P277</a></li><li><a href="/wiki/Cat%C3%A9gorie:Logiciel_cat%C3%A9goris%C3%A9_automatiquement_par_langage_d%27%C3%A9criture" title="Catégorie:Logiciel catégorisé automatiquement par langage d'écriture">Logiciel catégorisé automatiquement par langage d'écriture</a></li><li><a href="/wiki/Cat%C3%A9gorie:Article_utilisant_une_Infobox" title="Catégorie:Article utilisant une Infobox">Article utilisant une Infobox</a></li><li><a href="/wiki/Cat%C3%A9gorie:Article_contenant_un_appel_%C3%A0_traduction_en_anglais" title="Catégorie:Article contenant un appel à traduction en anglais">Article contenant un appel à traduction en anglais</a></li><li><a href="/wiki/Cat%C3%A9gorie:Portail:Logiciels_libres/Articles_li%C3%A9s" title="Catégorie:Portail:Logiciels libres/Articles liés">Portail:Logiciels libres/Articles liés</a></li><li><a href="/wiki/Cat%C3%A9gorie:Portail:Logiciel/Articles_li%C3%A9s" title="Catégorie:Portail:Logiciel/Articles liés">Portail:Logiciel/Articles liés</a></li><li><a href="/wiki/Cat%C3%A9gorie:Portail:Informatique/Articles_li%C3%A9s" title="Catégorie:Portail:Informatique/Articles liés">Portail:Informatique/Articles liés</a></li></ul></div></div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
</div>
|
||||
<div class="mw-footer-container">
|
||||
|
||||
<footer id="footer" class="mw-footer" role="contentinfo" >
|
||||
<ul id="footer-info">
|
||||
<li id="footer-info-lastmod"> La dernière modification de cette page a été faite le 17 mai 2023 à 04:04.</li>
|
||||
<li id="footer-info-copyright"><span style="white-space: normal"><a class="internal" href="/wiki/Wikip%C3%A9dia:Citation_et_r%C3%A9utilisation_du_contenu_de_Wikip%C3%A9dia" title="Droit d'auteur">Droit d'auteur</a> : les textes sont disponibles sous <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr" title="Licence Creative Commons Attribution - partage dans les mêmes conditions 4.0 international">licence Creative Commons attribution, partage dans les mêmes conditions</a> ; d’autres conditions peuvent s’appliquer. Voyez les <a href="https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/fr" title="Conditions d’utilisation de la Wikimedia Foundation">conditions d’utilisation</a> pour plus de détails, ainsi que les <a class="internal" href="/wiki/Wikip%C3%A9dia:Cr%C3%A9dits_graphiques" title="Droit d'auteur de certaines icônes">crédits graphiques</a>. En cas de réutilisation des textes de cette page, voyez <a class="internal" href="/wiki/Sp%C3%A9cial:Citer/Miniflux" title="Citer ou réutiliser cette page">comment citer les auteurs et mentionner la licence</a>.<br />
|
||||
Wikipedia® est une marque déposée de la <a href="https://wikimediafoundation.org/" title="Wikimedia Foundation">Wikimedia Foundation, Inc.</a>, organisation de bienfaisance régie par le paragraphe <a class="internal" href="/wiki/501c" title="501c">501(c)(3)</a> du code fiscal des États-Unis.</span><br /></li>
|
||||
</ul>
|
||||
|
||||
<ul id="footer-places">
|
||||
<li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/fr">Politique de confidentialité</a></li>
|
||||
<li id="footer-places-about"><a href="/wiki/Wikip%C3%A9dia:%C3%80_propos_de_Wikip%C3%A9dia">À propos de Wikipédia</a></li>
|
||||
<li id="footer-places-disclaimers"><a href="/wiki/Wikip%C3%A9dia:Avertissements_g%C3%A9n%C3%A9raux">Avertissements</a></li>
|
||||
<li id="footer-places-contact"><a href="//fr.wikipedia.org/wiki/Wikipédia:Contact">Contact</a></li>
|
||||
<li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code de conduite</a></li>
|
||||
<li id="footer-places-developers"><a href="https://developer.wikimedia.org">Développeurs</a></li>
|
||||
<li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/fr.wikipedia.org">Statistiques</a></li>
|
||||
<li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Déclaration sur les témoins (cookies)</a></li>
|
||||
<li id="footer-places-mobileview"><a href="//fr.m.wikipedia.org/w/index.php?title=Miniflux&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Version mobile</a></li>
|
||||
</ul>
|
||||
|
||||
<ul id="footer-icons" class="noprint">
|
||||
<li id="footer-copyrightico"><a href="https://wikimediafoundation.org/"><img src="/static/images/footer/wikimedia-button.png" srcset="/static/images/footer/wikimedia-button-1.5x.png 1.5x, /static/images/footer/wikimedia-button-2x.png 2x" width="88" height="31" alt="Wikimedia Foundation" loading="lazy" /></a></li>
|
||||
<li id="footer-poweredbyico"><a href="https://www.mediawiki.org/"><img src="/static/images/footer/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/static/images/footer/poweredby_mediawiki_132x47.png 1.5x, /static/images/footer/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"></a></li>
|
||||
</ul>
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vector-settings" id="p-dock-bottom">
|
||||
<ul>
|
||||
<li>
|
||||
<button class="cdx-button cdx-button--icon-only vector-limited-width-toggle" id=""><span class="vector-icon mw-ui-icon-fullScreen mw-ui-icon-wikimedia-fullScreen"></span>
|
||||
|
||||
<span>Activer ou désactiver la limitation de largeur du contenu</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw1401","wgBackendResponseTime":136,"wgPageParseReport":{"limitreport":{"cputime":"0.369","walltime":"0.494","ppvisitednodes":{"value":3432,"limit":1000000},"postexpandincludesize":{"value":58705,"limit":2097152},"templateargumentsize":{"value":16628,"limit":2097152},"expansiondepth":{"value":21,"limit":100},"expensivefunctioncount":{"value":6,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":2070,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 449.099 1 -total"," 52.56% 236.049 45 Modèle:Wikidata"," 52.35% 235.089 1 Modèle:Infobox_Logiciel"," 34.76% 156.108 23 Modèle:Infobox_V3/Tableau_Ligne_mixte"," 21.42% 96.191 1 Modèle:Ébauche"," 11.91% 53.472 1 Modèle:Palette"," 10.43% 46.825 1 Modèle:Palette_Agrégateurs"," 9.96% 44.723 1 Modèle:Méta_palette_de_navigation"," 8.15% 36.590 13 Modèle:Infobox_V3/Tableau_Ligne_mixte_Wikidata"," 8.02% 36.009 2 Modèle:Méta_palette_de_navigation_sous-groupe"]},"scribunto":{"limitreport-timeusage":{"value":"0.226","limit":"10.000"},"limitreport-memusage":{"value":10407160,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.canary-7c9994f4f8-6g6bc","timestamp":"20240304111906","ttl":2592000,"transientcontent":false}}});});</script>
|
||||
<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Miniflux","url":"https:\/\/fr.wikipedia.org\/wiki\/Miniflux","sameAs":"http:\/\/www.wikidata.org\/entity\/Q16664605","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q16664605","author":{"@type":"Organization","name":"Contributeurs aux projets Wikimedia"},"publisher":{"@type":"Organization","name":"Fondation Wikimedia, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2013-04-14T21:28:24Z","dateModified":"2023-05-17T03:04:00Z","headline":"lecteur RSS pour serveur Web en Golang"}</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue