Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言编程登录Amazon#_C#_Amazon - Fatal编程技术网

C# 用C语言编程登录Amazon#

C# 用C语言编程登录Amazon#,c#,amazon,C#,Amazon,我想用C#以编程方式登录Amazon seller central。我不想使用Amazon Web服务 以下是我迄今为止所做的工作: 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

我想用C#以编程方式登录Amazon seller central。我不想使用Amazon Web服务

以下是我迄今为止所做的工作:

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响应


我的目标是登录,然后在卖家中心搜索我的库存中的一些产品。如何做到这一点,并在我将要做的其他Web请求上保留会话和cookie?

他们[Amazon]在页面上有许多Java脚本。这些脚本的全部目的似乎是阻止人们做你想做的事情

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

这是一种安全措施,可防止卖家账户遭受暴力黑客攻击等

JS代码片段被故意混淆,以防止您轻松地对其进行反向工程,但当您应用知识、耐心和毅力时,当然没有什么是不可能的

如果您想继续这样做,那么我建议在页面上对JS进行反向工程,然后模拟这些代码对表单值所做的操作,等等,还可以模拟其他资产调用以及相对计时流。注意图像或远程脚本头中秘密设置的cookie,并确保脚本的cookie jar始终正常运行

这些反仿真技术经常用于防止机器人网络模拟PPC网络上的点击。它们既不是万无一失的,也不是牢不可破的,但要让它工作起来需要相当长的时间

老实说,如果您对他们提供的C#库的编程风格或功能不满意,那么您最好构建自己的库来利用Amazon Marketplace Web服务


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

好吧。。。。amazon可能希望您使用AWS……我建议您不要使用这种方法,因为SellerCentral及其各种组件每周或每两周都会发生变化。你不太可能跟上变化率(这意味着你必须一个月对一堆html和javascript进行几次反向工程)。我遇到的问题是你无法从web服务中获得跟踪号。它唯一可用的地方是一个网页。。。我可能不得不在web浏览器上进行UI自动化来提取数据。