> For the complete documentation index, see [llms.txt](https://icotakuscrapper.gitbook.io/documentation-dicotakuscrapper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://icotakuscrapper.gitbook.io/documentation-dicotakuscrapper/authentification-et-securite/authentification.md).

# Authentification

## Connexion

Pour vous authentifier, vous devez utiliser la classe `IcotakuConnexion` comme suit :

```csharp
using var connexion = new IcotakuConnexion("userName", "passWord");

//Lance la tentative de connexion
if (!await connexion.ConnectAsync())
{
    Assert.Fail("Impossible de se connecter en tant qu'utilisateur sur le site d'Icotaku.");
    return;
}

//...
```

{% hint style="warning" %}
Pour des raisons de commodités le nom d'utilisateur et le mot de passe sont codés en dur et visible clairement, en production, n'entrez et ne codez jamais en dur et/ou clairement vos identifiants.
{% endhint %}

## Accéder à une page

Il existe des pages ou des sections d'une page qui ne sont disponible que lorsque vous vous êtes authentifié, dans l'exemple suivant vous verrez comment accéder au contenu d'une page.

{% hint style="info" %}
Il s'agit ici d'obtenir le contenu HTML de la page en question qui nécessite une authentification, vous pourrez ensuite utiliser le composant `HtmlAgilityPack` pour analyser celui-ci.
{% endhint %}

```csharp
using var connexion = new IcotakuConnexion("userName", "passWord");

//Lance la tentative de connexion
if (!await connexion.ConnectAsync())
{
    Assert.Fail("Impossible de se connecter en tant qu'utilisateur sur le site d'Icotaku");
    return;
}

//Retourne le contenu HTML de la page d'accueil
string? htmlString = await connexion.GetHtmlStringAsync(new Uri("https://anime.icotaku.com/"));
```

{% hint style="warning" %}
Tout nom de domaine ne contenant pas `icotaku.com` sera refusé.
{% endhint %}

## Soumettre un formulaire

Dans l'exemple suivant, vous découvrirez comment soumettre un formulaire sur Icotaku.

```csharp
using var connexion = new IcotakuConnexion("userName", "passWord");

//Lance la tentative de connexion
if (!await connexion.ConnectAsync())
{
    Assert.Fail("Impossible de se connecter en tant qu'utilisateur sur le site d'Icotaku");
    return;
}

//Création du dictionnaire de données obligatoire du formulaire
var formData = new Dictionary<string, string>
{
    { "input_Name", "input_Value" },
    { "select_Name", "selected_Value" },
    { "textarea_Name", "text_value"},
    //...
};

var postResult = await connexion.PostAsync("/post_url", new FormUrlEncodedContent(formData));
Console.WriteLine(postResult.Message);
Console.WriteLine(postResult.StatusCode);
Console.WriteLine(postResult.IsSucces);
```

## Déconnexion

Dans l'exemple suivant, vous découvrirez comment vous déconnecter d'Icotaku.

```csharp
using var connexion = new IcotakuConnexion("userName", "passWord");

//Lance la tentative de connexion
if (!await connexion.ConnectAsync())
{
    Assert.Fail("Impossible de se connecter en tant qu'utilisateur sur le site d'Icotaku");
    return;
}

//Déconnecte l'utilisateur
await connexion.DisconnectAsync();
```
