Connexion par programme à Amazon avec C #

Je souhaite me connecter par programme à Amazon Central par C #. Je ne souhaite pas utiliser Amazon Web Services.

Voici ce que j’ai fait jusqu’à présent:

private void button1_Click(object sender, EventArgs e) { ssortingng appURL = "https://sellercentral.amazon.com/gp/sign-in/sign-in.html/ref=xx_login_lgin_home"; ssortingng strPostData = "protocol=https&action=sign-in&email=test%40gmail.com&destination=https%3A%2F%2Fsellercentral.amazon.com%2Fgp%2Fhomepage.html%3Fie%3DUTF8%26%252AVersion%252A%3D1%26%252Aensortinges%252A%3D0&optin=1&ouid=01&password=ntest&sign-in-button=&metadata1=SIsVVcIUMA1uElSK%2BySsVuCX1YuhcTji35ShGdQ%2Fd4ipBgkh6qW6HcPfyVu4dbOFdZiErWz%2F9OumR%2FfeVnrNSUUSEkIokrMPxYFPtZTlfJc44D8hWHpewjOs5TF4NIDyehvkc5eHJ8GsDbiUSdBtOq4iBnIpkIpAodIzIVFHK%2FQJJICA9n%2F8abB4XfwODJrI7YSa1gwCMrJbh0wvpAW5%2B%2BHecdjA5Bin8slkBqj9LQG%2FfSrTXlAGPsW21qV2ba4kej5xdjytVTELVqnLPB9Fc1Z%2FR98qDpBkQ%2F2lM3EV4POoe0nsAMALomqvOhOkIInqp14Ic%2BxJU35hX89rIhmSQMpL1WtMGE%2F9A2ebmHV%2BzlW0tUZIfxyupg2MiNJIeg1uNqBhBT8duYyKp0n3d5gYOnhxYCQTqR297AV%2FDAdHSlbrJRT5HX9spg9RyHSTDLiGvhy1BaK0LIzvR%2Bj786i4Z%2FCGBpb31XcXrFx9uDe8rxtNRLFiDXqxUCCf8hTBEhtyYriB2%2FlZAvoIRyAZMLDYykncALiRVPOWkQX%2FQjZUu6M6bBfqaQ6ODQlbc0j9V2FZ%2BEQng456mQmUOoO5"; // Setup the HTTP request. HttpWebRequest objWebRequest = (HttpWebRequest)WebRequest.Create(appURL); objWebRequest.Method = "POST"; objWebRequest.AllowAutoRedirect = true; objWebRequest.CookieContainer = new CookieContainer(); //Enable Coolkie objWebRequest.ContentLength = strPostData.Length; objWebRequest.ContentType = "application/x-www-form-urlencoded"; objWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; // Post to the login form. StreamWriter swRequestWriter = new StreamWriter(objWebRequest.GetRequestStream()); swRequestWriter.Write(strPostData); swRequestWriter.Close(); // Get the response. HttpWebResponse objWebResponse = (HttpWebResponse)objWebRequest.GetResponse(); // Read the response StreamReader srResponseReader = new StreamReader(objWebResponse.GetResponseStream()); ssortingng strResponseData = srResponseReader.ReadToEnd(); srResponseReader.Close(); // Display the response. webBrowser1.DocumentText = strResponseData; } 

}

Quand je l’exécute, je reçois en réponse la page de connexion et ne me connecte pas … Pourquoi? Qu’est ce que je fais mal? J’utilise pour afficher la réponse HTML un navigateur Web.

Mon objective est de me connecter puis de rechercher certains produits de mon inventaire dans le centre du vendeur. Comment faire cela et conserver des sessions et des cookies sur d’autres requêtes en ligne que je ferai?

Ils [Amazon] ont de nombreux javascripts sur la page. Le but de ces scripts semble être d’empêcher les gens de faire ce que vous essayez de faire.

La manipule les données de formulaire et appelle divers autres éléments de la page Amazon utilise ensuite ces autres appels d’actifs et les données manipulées pour déterminer si la demande provient d’un navigateur légitime ou de quelque chose qui tente d’émuler un navigateur.

Il s’agit d’une mesure de sécurité visant à empêcher les comptes de vendeurs d’être attaqués par force brute, etc.

Les extraits de code JS sont délibérément obfusqués pour vous empêcher de procéder à une ingénierie inverse, mais rien n’est bien sûr impossible lorsque vous appliquez connaissances, patience et ténacité.

Si vous souhaitez poursuivre sur ce sujet, je vous recommande de procéder au reverse engineering du JS sur la page, puis d’émuler ce que ces éléments, si le code utilise, utilisent les valeurs de formulaire, etc., puis d’émuler les autres appels d’actifs, ainsi que le stream temporel relatif. Faites attention aux cookies qui sont secrètement définis dans les en-têtes d’image ou de script distant et assurez-vous que votre jarre à cookies pour votre script se comporte toujours correctement.

Ces techniques anti-émulation sont régulièrement utilisées pour empêcher les réseaux de bots d’émuler des clics sur des réseaux PPC. Ils ne sont ni infaillibles ni incassables, mais il vous faudra beaucoup de temps pour le faire fonctionner.

Honnêtement, si vous n’êtes pas satisfait des styles de programmation ou des fonctionnalités des bibliothèques C # qu’elles fournissent, vous avez intérêt à créer votre propre bibliothèque pour utiliser les services Web Amazon Marketplace.

À long terme, vous aurez une boîte à outils beaucoup plus stable qui n’aura pas besoin d’être mise à jour régulièrement.