Touch Error code 1020 (Cloudflare)

Inscrit
15 Mai 2021
Messages
4
Reactions
0
#1
J'essai de faire une POST request pour avoir l api key pour passer au Websocket mais je reçois error 1020.
Comment je peut le bypasser ?
Je suis deubtant dans le domain du creation des bots et connexion au serveur des jeux donc tout conseil est tres fort apprécié, mercii!!
C#:
    class Program {
        private static readonly HttpClient httpClient = new HttpClient();
        private static string username = "USERNAME_HERE";
        private static string password = "PASSWORD_HERE";
        static async Task Main(string[] args) {
            var result = await Post();
            Console.WriteLine(result);
        }

        static async Task<string> Post() {
            var values = new Dictionary<string, string> {
                { "login", username },
                { "password", password },
                { "long_life_token", "false" }
            };
            var content = new FormUrlEncodedContent(values);
            var response = await httpClient.PostAsync("https://haapi.ankama.com/json/Ankama/v5/Api/CreateApiKey", content);
            return await response.Content.ReadAsStringAsync();
        }
    }
 
Inscrit
8 Septembre 2017
Messages
36
Reactions
8
#2
Tu fais la requete depuis un VPS/VPN ?
 
Inscrit
8 Septembre 2017
Messages
36
Reactions
8
#4
Regarde au niveau des requêtes de ankama, le header etc il doit y avoir une sécurité
 
Inscrit
15 Mai 2021
Messages
4
Reactions
0
#5
Regarde au niveau des requêtes de ankama, le header etc il doit y avoir une sécurité
Ah oui peut etre, j'ai essayé de copier la meme header (user-agent etc) mais ne fonctionne toujours pas. par contre il y a une valeur de cookie dans le header, tu pense que c'est la raison?
n'a pas trouvé de moyen de le creer, j'ai essaye valeur aléatoire mais ne marche pas.
(désolé pour ma mauvais français, ce n'est pas ma premiere langue :/ )
 
Inscrit
15 Mai 2021
Messages
4
Reactions
0
#6
EDIT: il semble que le cookie soit en fait lié au problème, car il s'appelle __cf_bm, ce qui signifie Cloudflare Bot Management.
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#7
Cloudflare n'est pas le problème apparement... Je suis confronté au même problème, donc je récupère le set-cookie lors de ma première requête à https://proxyconnection.touch.dofus.com/config.json (fait à l'arrache):

JavaScript:
request.get(ENDPOINTS.CONFIG, (error, response, body) => {
    let cookie = `__cf${JSON.stringify(response.headers['set-cookie']).split('__cf')[1]..split(';')[0]}`
    console.log(cookie)
    ...
retourne __cf_bm=62a56e7fbfad4af2941a5fcb9ae73e5b56ffbd06-1622388975-1800-AXqai+CxEWnqccfDa8zz4VFifXeeLBS1L/cyL+SGHJL2IoZf72fNqtn22uC1jFPn1Gf4uL+hS794UP1wIz8U2kGiZdylLGaCd1e+OlzsqbwQ

Je le passe ensuite dans les headers quand je récupère l'apikey et le token:
JavaScript:
request.post({
    headers: {'content-type' : 'application/x-www-form-urlencoded', 'cookie': cookie},
    url: ENDPOINTS.API_KEY,
    body: `login=${username}&password=${password}&long_life_token=false`
    ...
Pourtant j'obtiens toujours ce code d'erreur 1020 en réponse...

Quelqu'un a une piste?
 
Dernière édition:

KR3

Membre
Inscrit
23 Novembre 2018
Messages
20
Reactions
1
#8
Cloudflare n'est pas le problème apparement... Je suis confronté au même problème, donc je récupère le set-cookie lors de ma première requête à https://proxyconnection.touch.dofus.com/config.json (fait à l'arrache):

JavaScript:
request.get(ENDPOINTS.CONFIG, (error, response, body) => {
    let cookie = `__cf${JSON.stringify(response.headers['set-cookie']).split('__cf')[1]..split(';')[0]}`
    console.log(cookie)
    ...
retourne __cf_bm=62a56e7fbfad4af2941a5fcb9ae73e5b56ffbd06-1622388975-1800-AXqai+CxEWnqccfDa8zz4VFifXeeLBS1L/cyL+SGHJL2IoZf72fNqtn22uC1jFPn1Gf4uL+hS794UP1wIz8U2kGiZdylLGaCd1e+OlzsqbwQ

Je le passe ensuite dans les headers quand je récupère l'apikey et le token:
JavaScript:
request.post({
    headers: {'content-type' : 'application/x-www-form-urlencoded', 'cookie': cookie},
    url: ENDPOINTS.API_KEY,
    body: `login=${username}&password=${password}&long_life_token=false`
    ...
Pourtant j'obtiens toujours ce code d'erreur 1020 en réponse...

Quelqu'un a une piste?
Il te manque des cookies non ?
Le header cookie se décompose comme ça:

JSON:
cookie:
NOTIFS=%5B%7B%22id%22%3A4qdsqsts%22%3A1621344857%7D%5D;
cf_clearance=c0f5e60221ef43aae5c8wxcwxcw<0255356dc9-16d861889-0-1-615959d9.5cf81e.36580d39-150;
__cf_bm=86257a1d849b8fbfc4eb29fbwxcw1331c1cwcxwxx5-1622550757-1800-Ac354v48OcqB1YKk2pCtIJC/S1TNjPZRgqfW/SYrN1PfnL3TbXpv2mAYlp+/WAMYSPdrjP1yPCz7VkhdTzIytbcof8hmp+/ycctSFynN3Ll0; 
AWSALBTG=x0ATAJDUflXJ2wP03LqYpim12zs4ooQ9dh1H8TEG5B1dKRNZ5MEO/6KSo+DsOfwLdsNPkmxoTX8KGT45gDoFq4mymTDAki0iQSho4OniDT+7CFhu0t1YF5cwo4yZRQcZNM2zEzTAfa84EK+F2WEcpI352qJTb5WDBAe2KWnnMSDP;
AWSALBTGCORS=x0ATAJDUflXJ2EG5B1dKRNZ5MEO/6KSo+DsOfwL+sNPkmxoTX8KGT4dDoFq4mymTDAki0iQSho4OniDT+7CFhu0t1YF5cwo4yZRQcZNM2zEda84EK+F2WEcpI352qJTb5WDBAe2KWnnMSDP;
AWSALB=rdXF+779ITDS2EAPzWtL46fSFkRNwRcREYzIFRdTTIYz6fgIYjY1l7eAEnSDnmQLJw5myW+UgDoEz3tK+YcyJVuUDALIsy367a3bJS3rvpuS8L5EseFtW/Q84xDF;
AWSALBCORS=rdXF+779ITDS2EAPzWsfSFkRNwRcREYzIFRdTTIYz6fgIYjY1deAEnSDnmQLJw5myW+UgDoEz3tK+YcyJVuUDALIsy367a3bJS3rvpuS8L5ESeFtW/Q84xDF
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#9
@KR3 Effectivement le header cookie avait été mal géré de mon côté mais après avoir corrigé tout ça je prend toujours une erreur 1020. :(
J'utilise ma propre IP qui fonctionne à la fois sur Lindo et sur les sites d'ank@ma. Voilà ma requête si sa peut aider ?

JavaScript:
//variables:
//HAAPI_ENDPOINTS.API_KEY = 'https://haapi.ankama.com/json/Ankama/v5/Api/CreateApiKey'
//payload = `login=${username}&password=${password}&long_life_token=false`
//cookie = le bon headers['set-cookie'] lors de la requête à 'https://proxyconnection.touch.dofus.com/config.json'
//key = null
...
await request(
    {
        headers:
        {
            'content-type': 'application/x-www-form-urlencoded',
            'content-length': Buffer.byteLength(payload),
            'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; Nexus 5X Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.140 Mobile Safari/537.36',
            'accept': 'application/json',
            'accept-language': 'en-US',
            'origin': 'null',
            'cookie': cookie
        },
        uri:HAAPI_ENDPOINTS.API_KEY,
        method: 'POST',
        body: payload
    },
    (error, response, body) =>
    {
        if (error) return false
        key = JSON.parse(body).key
    })
)}
 

KR3

Membre
Inscrit
23 Novembre 2018
Messages
20
Reactions
1
#10
Essaie avec https://www.npmjs.com/package/got plutôt

Mais avant essaie avec un partage de co 4g par exemple, si ça fonctionne tu sais que ça vient de ton IP, sinon ça vient de la manière dont tu fais ta requête.

1020 signifie que "Un client ou un navigateur est bloqué par les règles de pare-feu d'un client Cloudflare. "
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#11
Sa avance, je me retrouve avec un status code 403 donc le cookie est bien corrigé et la lib request est bien dépassée. J'imagine que le 403 vient de mon user-agent. Merci pour ton aide, voilà la requête et l'erreur si sa peut aider:
JavaScript:
const get_apikey = async (cookie, username, password) =>
{
    let apikey  = null
    let payload = `login=${username}&password=${password}&long_life_token=false`

    try {
        const response = await got.post(haapi_endpoints.get_apikey, {
            headers: {
                'content-type': 'text/plain;charset=UTF-8',
                'content-length': Buffer.byteLength(payload),
                'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; Nexus 5X Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.140 Mobile Safari/537.36',
                'accept': 'application/json',
                'accept-language': 'en-US',
                'origin': 'null',
                'cookie': cookie
            },
            body: payload
        })

        apikey = JSON.parse(response.body).key
    } catch (error) {
        console.log('error:', error)
    }

    return apikey
}

=============
== CONSOLE ==
=============

error: HTTPError: Response code 403 (Forbidden)
    at Request.<anonymous> (D:\Projets\...\got\dist\source\as-promise\index.js:117:42)
    at processTicksAndRejections (internal/process/task_queues.js:93:5) {
  code: undefined,
  timings: {
    start: 1622602319697,
    socket: 1622602319698,
    lookup: 1622602319712,
    connect: 1622602319734,
    secureConnect: 1622602319784,
    upload: 1622602319785,
    response: 1622602319812,
    end: 1622602319817,
    error: undefined,
    abort: undefined,
    phases: {
      wait: 1,
      dns: 14,
      tcp: 22,
      tls: 50,
      request: 1,
      firstByte: 27,
      download: 5,
      total: 120
    }
  }
}

EDIT: Sa vient pas de l'user-agent, j'ai égalementé testé avec 2 partage 4G différents et rien n'y fait. J'avoue avoir du mal à comprendre d'où peut venir le problème, voici un pastebin de mon code au complet pour ceux qui peuvent me dire où je foire: DTouch Haapi Connection - Pastebin.com
 
Dernière édition:

KR3

Membre
Inscrit
23 Novembre 2018
Messages
20
Reactions
1
#12
Je m'étais fais une app avec got pour créer des comptes, je faisais mes requêtes simplement avec le header suivant :
"Content-Type": "application/json",

Il n'y a pas de captcha à résoudre pour accéder à tes pages dans haapi_endpoints ?
car moi j'en avais un pour l'endpoint createguest et validateguest
 
Inscrit
26 Février 2019
Messages
47
Reactions
12
#13
Si il y en a pour haapi_endpoints.get_apikey et haapi_endpoints.get_token normalement. Honnêtement je pense que je vais passer à autre chose car je comprend réellement pas l'origine du problème. Même en utilisant puppeteer comme intermédiaire pour faire mes requête et bypass Cloudflare je ne parviens pas à obtenir mon token et poursuivre la connexion...
 

DevChris

Membre Actif
Inscrit
12 Avril 2017
Messages
138
Reactions
24
#14
Pour got il faut rajouter cookie-jar. Ainsi que trouver les bons ciphers et sigalgs
 
Haut Bas