Title: Bloquer le spam téléphonique chez Free Mobile
Date: 2026-06-16 23:00

This blogpost is in French, as it explains how to block spam calls for
[Free Mobile](https://en.wikipedia.org/wiki/Free_Mobile) customers.

Le spam téléphonique fait partie de ces petites chose irritantes du quotidien
dont on se passerait bien et qui continuent d'exister au mépris du bon sens. En
attendant que la pratique soit rendue illégale et punie par une marche forcée
sur de tout petits Lego, il est possible, via l'interface web de Free,
de bloquer les plages de numéros utilisés par ces pénibles pour nous pourrir 
ledit quotidien.

L'[ARCEP](https://fr.wikipedia.org/wiki/Autorit%C3%A9_de_r%C3%A9gulation_des_communications_%C3%A9lectroniques,_des_postes_et_de_la_distribution_de_la_presse),
louée soit-elle, publie [une
page](https://www.arcep.fr/actualites/actualites-et-communiques/detail/n/plan-de-numerotation-050922.html)
détaillant le plan de numérotation téléphonique français, qui raconte en gros
que "les prefixes 0162, 0163, 0270, 0271, 0377, 0378, 0424, 0425, 0568, 0569,
0948, 0949, 09475, 09476, 09477, 09478 et 09479 sont utilisés pour le
démarchage".

Malheureusement, il reste des petits *plaisantins* qui utilisent d'autres numéros
pour chagriner le quidam, souvent d'opérateurs qu'on pourrait charitablement 
qualifier de "peu regardant". Une solution tout à fait valide serait
d'utiliser [saracroche]( https://saracroche.org/), une chouette application
iOS/Android [open-source](https://codeberg.org/cbouvat) qui permet de non
seulement de bloquer les indésirables, mais également de collectivement
constituer une base de données les recensant. Un petit passage par [la
documentation](https://saracroche.org/fr/help/blocked-numbers/) nous informe
qu' "environ 15 millions de numéros sont bloqués, dont 12,5 millions
correspondent aux préfixes réservés au démarchage téléphonique, communiqués par
l'ARCEP". Plutôt que d'installer une nième application, on va
utiliser son API pour aller récupérer quelques préfixes en plus de ceux
de l'ARCEP. Comme la liste est conséquente, on va dégrossir par taille de
plage :

```console
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("######"))' | wc -l
12
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("#####"))' | wc -l
20
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("####"))' | wc -l
253
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("###"))' | wc -l
1541
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("###"))' | wc -l
1541
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("##"))' | wc -l
1541
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern | contains("#"))' | wc -l
1541
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators | jq -c '.patterns[] | select(.pattern)' | wc -l
1541
$
```

Je suis parti sur du `#####`, soit 100.000 numéros par blocage, en me réservant
évidement la possibilité de descendre plus bas si cela s'avère nécessaire.
Suivez votre cœur et prenez la granularité que vous voulez.

Un petit coup de `jq`/`sed`/`tr` d'une rare élégance pour mettre tout ça en
forme:

```console
$ curl --silent https://saracroche.org/api/v1/lists/french-list-arcep-operators \
    | jq -c '.patterns[] | select(.pattern | contains("#####")) | .pattern ' \
    | sed 's/^"33/"0/ ; s/#//g ; s/"$/*",/' \
    | tr '\n' ' '
"0162*", "0163*", "0270*", "0271*", "0377*", "0378*", "0424*", "0425*", "0568*", "0569*", "0948*", "0949*" "09475*", "09476*", "09477*", "09478*", "09479*", "07568*", "07569*", "07809*",
$
```

Pour bloquer tout ce joli monde,  il suffit de se rendre sur
<https://mobile.free.fr/account/mes-services/filtres>, et de coller le bout de
JavaScript suivant dans la console du navigateur, en prenant évidement soin de
replacer la ligne `// Les patterns vont ici` par les patterns précédemment
générés.

```javascript
(async function () {
    var phonePatterns = [
        // Les patterns vont ici
    ];

    var saveUrl = '/account/mes-services/filtres?action=save';

    var existing = document.querySelectorAll('.f-rules__item--msisdn');
    var hasRule = p => [...existing].some(el => el.innerHTML.includes(p));

    for (const pattern of phonePatterns) {
        if (hasRule(pattern)) {
            console.log('Règle déjà présente: ', pattern);
            continue;
        }

        const body = new URLSearchParams({
            'rule-id': '',
            direction: '2',
            pattern: pattern,
            description: 'Spam',
            'full-day': '1',
            'full-week': '1',
            media: '1',
            action: '2'
        });

        const res = await fetch(saveUrl, {
            method: 'POST',
            headers: { 'Content-type': 'application/x-www-form-urlencoded' },
            body
        });

        console[res.ok ? 'log' : 'error']((res.ok ? '[OK]' : '[KO]'), pattern);
    }

    console.log('Toutes les règles ont été parcourues');
})();
```
