使用C#以编程方式登录到Amazon [英] Programmatically login to Amazon with C#

查看:137
本文介绍了使用C#以编程方式登录到Amazon的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用C#以编程方式登录到亚马逊卖家平台。我不想使用Amazon Web Services。

I want to login to Amazon seller central programmatically with C#. I don't want to use Amazon Web Services.

这是我到目前为止所做的:

Here is what I have done so far:

private void button1_Click(object sender, EventArgs e)
{
    string appURL = "https://sellercentral.amazon.com/gp/sign-in/sign-in.html/ref=xx_login_lgin_home";
    string 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%252Aentries%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 Cookie
    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());
    string strResponseData = srResponseReader.ReadToEnd();
    srResponseReader.Close();

    // Display the response.
    webBrowser1.DocumentText = strResponseData;
}

执行该命令时,我得到登录页面的响应,但没有登录...为什么?我做错了什么?我通常使用Web浏览器来显示html响应。

When I execute it I get as a response the login page and don't login... Why? What I am doing wrong? I use to display the html response a web browser.

我的目标是登录,然后在卖方中心的库存中搜索一些产品。

My goal is to login and then search some products in my inventory in seller central. How to do this and keep sessions and cookies on other webrequests I will do?

推荐答案

他们[Amazon]上有许多Javascript,如何做到这一点并将会话和cookie保留在我将要执行的其他Web请求上?页。这些脚本的全部目的似乎是为了防止人们去做您想做的事情。

They [Amazon] have numerous Javascripts on the page. The whole purpose of these scripts seems to be to prevent people doing what you are trying to do.

操纵表单数据并调用其他各种页面资产。然后,亚马逊使用其他资产调用和操纵的数据来确定请求是来自合法浏览器还是试图模仿浏览器的东西。

The manipulate the form data and call various other page assets. Amazon then use those other assets calls and the manipulated data to determine if the request is from a legitimate browser or something trying to emulate a browser.

这是一种安全措施,可以阻止卖方帐户能够进行暴力破解攻击等。

It's a security measure to stop seller accounts being capable of a brute-force hack attack, etc.

故意对JS代码段进行了模糊处理,以防止您轻松地对它们进行反向工程,但是当然没有什么不可能的当您应用知识,耐心和坚韧时。

The JS snippets are purposefully obfuscated to prevent you from easily reverse engineering them, but of course nothing is impossible when you apply knowledge, patience and tenacity.

如果您要追求这一点,那么我建议您对页面上的JS进行反向工程,然后在代码执行的情况下模拟那些部分以及表单值等,还可以模拟其他资产调用以及相对的时间流。请注意将cookie秘密设置在图像或远程脚本头中,并确保脚本的cookie jar始终正常运行。

If you want to pursue this then I would recommend reverse engineering the JS on the page and then emulate what those pieces if code do with the form values, etc. and also emulate the other asset calls, along with relative timing flow. Pay attention to cookies being secretly set in image or remote script headers, and ensure your cookie jar for your script is always behaving properly.

这些反仿真技术经常使用防止漫游器网络模仿PPC网络上的点击。它们不是傻瓜,也不是牢不可破的,但是要花很多时间才能使其正常工作。

These anti-emulation techniques are used regularly to prevent bot networks from emulating clicks on PPC networks. They are not fool proof nor are they unbreakable, but it will take you considerable time to get it working.

老实说,如果您对以下程序的编程样式或功能不满意:他们提供的C#库,那么您最好构建自己的库以利用Amazon Marketplace Web服务。

Honestly, if your not happy with the programming styles or functionality of C# libraries they provide, then you may be best building your own library to utilise the Amazon Marketplace Web Services.

从长远来看,您将拥有一个更加稳定的工具包不需要定期更新。

In the long run you'll have a much more stable toolkit that wont need updating regularly.

这篇关于使用C#以编程方式登录到Amazon的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆