2009-06-10 6 views
1

Si je visite le lien http://mega.1280.com/file/EKOZKE/, entrez le code captcha et cliquez sur le bouton Télécharger, je peux télécharger le fichier.Problème avec la soumission directe de formulaire

Je me demande si je peux soumettre le formulaire sans cliquer sur le bouton 'Télécharger'? Je veux dire taper le code captcha directement dans la barre d'adresse et appuyer sur Entrée?

J'essaie http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx où 'code_security' est le nom de la zone de texte du code captcha mais il a échoué. Des idées?

+0

Pourquoi faites-vous cela? – Shoban

+0

Je veux juste savoir la technique que ce site utilise pour soumettre un formulaire. – ByulTaeng

Répondre

1

Le formulaire a une méthode POST. Vous ne pouvez pas émuler une requête POST avec une URL différente, c'est ce que font les requêtes GET.

Même si le serveur ne vérifie pas la méthode de la demande, vous devez toujours fournir toutes les données obligatoires. Si vous regardez ce qui est envoyé par le formulaire, vous verrez qu'il y a 3 autres paramètres (action, btn_download, file_id), et surtout plusieurs cookies que le serveur a besoin pour récupérer votre session php (PHPSESSID), qui est à son tour nécessaire pour faire correspondre votre security_code avec le CAPTCHA fourni.

Ligne de fond: vous pouvez émuler la requête, mais pas en soumettant une simple requête GET. Vous devez utiliser un agent utilisateur réel, capable d'envoyer des demandes de publication et de gérer les cookies.

... Mais bien sûr, c'est exactement ce que CAPTCHA est là pour vous empêcher de faire :-).

modifier: pour répondre à votre commentaire "Je veux juste découvrir la technique que ce site utilise pour soumettre un formulaire." :

Ce site ne remplit pas le formulaire, actuellement. C'est votre navigateur qui soumet le formulaire, et il le fait en se conformant aux normes HTML et HTTP. Sur la page Web, la forme est codée

<form name="frm_download" method="post" action=""> 

Ainsi, lorsque vous cliquez sur le bouton « Envoyer », votre navigateur recueille toutes les données des entrées (texte, caché, peu importe) et envoie une requête HTTP POST à ​​la même URL que le formulaire provenait de, avec un tas d'en-têtes HTTP (y compris un Cookie en-tête qui contient toutes les informations de cookies stockées attachées à ce domaine serveur) et un corps contenant les données de formulaire: une liste de paires clé/valeur.

Le serveur reçoit la demande. Il peut vérifier qu'il s'agit en fait d'une requête POST. Il peut et récupérera toutes les paires de données soumises (paramètres). Il peut récupérer les cookies, et le fera pour restaurer votre session php. Il compare ensuite votre paramètre security_code avec les données correctes stockées dans votre session php. Si le CAPTCHA correspond, il vous enverra une réponse contenant le fichier pointé par votre paramètre file_id.

+0

Donc, disons que j'ai toutes les données obligatoires comme les paramètres, les cookies, le code de sécurité. Pouvez-vous me dire la méthode pour envoyer une demande de publication au serveur? – ByulTaeng

+1

Je dépends des outils que vous utiliserez pour cela :) J'utiliserais perl et LWP, et vous pouvez trouver un excellent tutoriel pour soumettre des demandes de publication avec le support de cookies ici: http://www.perl.com/lpt/a/661 – Alsciende

Questions connexes