Je suis en train d'obtenir les « contacts » Ajouté sur this page:problème avec Curl Ajax aller chercher des données
Les données est injecté avec un appel Ajax, et j'ai utilisé Wireshark pour capturer l'appel que je pense obtient les données :
POST /dwr/call/plaincall/UserActionAPI.getRecentlyTitleChangedContacts.dwr HTTP/1.1
Ce poste un tas de variables et un cookie, et donc j'ai fait un appel boucle avec la chaîne suivante:
curl -b "cookiejar.txt" -v -e "http://www.jigsaw.com/showContactUpdateTab.xhtml?companyId=212324" \
-F "type=text/plain&callCount=1&page=/showContactUpdateTab.xhtml?companyId=212324&httpSessionId=9CDBDA38B4F0C2A84622B523E79C0C38&scriptSessionId=784885169D0457ECDCA26FEF7B6DD7CF305&c0-scriptName=UserActionAPI&c0-methodName=getRecentlyAddedContacts&c0-id=0&c0-param0=number:212324&c0-param1=boolean:false&c0-param2=boolean:false&batchId=0" \
"http://www.jigsaw.com/dwr/call/plaincall/UserActionAPI.getRecentlyAddedContacts.dwr"
Mais il retourne toujours what looks like more JS script, même si je peux voir les données correctes retournées dans Wireshark. J'ai regardé ceci pendant un moment mais ne peux toujours pas trouver un moyen d'obtenir les données. Aidez-moi?
WWW :: Le paquet perl Mechanize ne supporte pas Javascript. Oui, je vais devoir analyser les données, ce n'est pas un problème. En regardant dans Firefox, la différence est que Firefox obtient les données et curl ne le fait pas.J'ai ouvert la page avec Chrome, puis changé l'agent utilisateur, les identifiants de session et copié les cookies pour faire l'appel Curl, même résultat. Il doit y avoir un module Perl pour le faire correctement? Je veux dire, tout ce que je veux faire, c'est exécuter Javascript, puis rafraîchir le DOM, n'est-ce pas? –
J'ai ajouté à la réponse, voir ci-dessus. Puisque vous essayez de gratter le serveur, vous n'avez pas de dom sur votre client. Vous émulez un navigateur, votre logiciel n'est pas un navigateur. Ouvrir une session dans un navigateur et essayer de terminer la session en curl ne fonctionnera généralement pas car vous entrerez dans le serveur avec une connexion TCP différente - le serveur générera une nouvelle session pour vous. Votre client doit émuler toute la conversation avec le serveur. –