Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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
不返回1/5 Cookie,C#简短而甜蜜的代码:RichTextBox,Form1_Load,使用System.Net/System.Collections.Specialized_C#_.net_Http_Cookies - Fatal编程技术网

不返回1/5 Cookie,C#简短而甜蜜的代码:RichTextBox,Form1_Load,使用System.Net/System.Collections.Specialized

不返回1/5 Cookie,C#简短而甜蜜的代码:RichTextBox,Form1_Load,使用System.Net/System.Collections.Specialized,c#,.net,http,cookies,C#,.net,Http,Cookies,我已经和Fiddler和Header混了两天,没有更好的了。请帮我找回最后一块饼干。在浏览器中,URL将让您直接登录(分别更改用户名和密码),并返回ds2、ebay、dp1、cssg、非会话cookies。。代码缺少易趣cookie 请求标头: 客户 接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3 接受编码:gzip、deflate、sdch

我已经和Fiddler和Header混了两天,没有更好的了。请帮我找回最后一块饼干。在浏览器中,URL将让您直接登录(分别更改用户名和密码),并返回ds2、ebay、dp1、cssg、非会话cookies。。代码缺少易趣cookie

请求标头:

客户

接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3

接受编码:gzip、deflate、sdch

接受语言:en-US,en;q=0.8

用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.17(KHTML,如Gecko)

Chrome/24.0.1312.56 Safari/537.17

运输

连接:保持活力

主持人:signin.ebay.com

 private void Form1_Load(object sender, EventArgs e)
   {
       string site = "https://signin.ebay.com/ws/eBayISAPI.dll?co_partnerId=2&siteid=0&UsingSSL=1&MfcISAPICommand=SignInWelcome&userid=USERNAME&pass=PWD&sngBt=Sign%20in";
       CookieContainer cookieJar = new CookieContainer();

       HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(site);
       request.CookieContainer = cookieJar;

       HttpWebResponse response = (HttpWebResponse)request.GetResponse();
       System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());

       richTextBox1.Text = sr.ReadToEnd();
       foreach (Cookie c1 in response.Cookies)
       {
           richTextBox1.AppendText(c1.Name.ToString() + "\n\n");
       }
   }
Fiddler不会再带我走了?这不会返回任何来源,但会返回易趣cookie。

最后

 private void Form1_Load(object sender, EventArgs e)
   {
       string site = "https://signin.ebay.com/ws/eBayISAPI.dll?co_partnerId=2&siteid=0&UsingSSL=1&MfcISAPICommand=SignInWelcome&userid=USERNAME&pass=PWD&sngBt=Sign%20in";
       CookieContainer cookieJar = new CookieContainer();

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(site);
        request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        request.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3");
        request.Headers.Add("Accept-Encoding: gzip,deflate,sdch");
        request.Headers.Add("Accept-Language: en-US,en;q=0.8");
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17";

        request.CookieContainer = cookieJar;

       HttpWebResponse response = (HttpWebResponse)request.GetResponse();
       System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream());

       richTextBox1.Text = sr.ReadToEnd();
       foreach (Cookie c1 in response.Cookies)
       {
           richTextBox1.AppendText(c1.Name.ToString() + "\n\n");
       }
   }
您将需要一个我使用的类,它是一个支持CookieContainer的简单WebClient

输出:

当我使用用户名p登录时,已将cookie值打印为“无”


HTTP.cs

class Program
{

    static void Main(string[] args)
    {
        CookieContainer cookieJar = new CookieContainer();
        HTTP http = new HTTP(cookieJar);
        string user = "this is not my username";
        string pass = "this is not my password";

        //some cookies are set before login & they are needed for an user to login, for that reason only you were getting the error
        string responseData = http.DownloadString("https://signin.ebay.com/ws/eBayISAPI.dll?SignIn");

        string midParamValue = ParseMid(responseData, "name=\"mid\" id=\"mid\" value=\"", "\"");
        string bUrlPrfx = ParseMid(responseData, "id=\"bUrlPrfx\" value=\"", "\"");
        string rqid = ParseMid(responseData, "id=\"bUrlPrfx\" value=\"", "\"");
        string pdata =
            string.Format(
                "MfcISAPICommand=SignInWelcome&bhid=a1%253Dna%7Ea2%253Dna%7Ea3%253Dna%7Ea4%253DMozilla%7Ea5%253DNetscape%7Ea6%253D5.0%2520%28Windows%29%7Ea7%253D20100101%7Ea8%253Dna%7Ea9%253Dtrue%7Ea10%253DWindows%2520NT%25206.1%253B%2520WOW64%7Ea11%253Dtrue%7Ea12%253DWin32%7Ea13%253Dna%7Ea14%253DMozilla%252F5.0%2520%28Windows%2520NT%25206.1%253B%2520WOW64%253B%2520rv%253A18.0%29%2520Gecko%252F20100101%2520Firefox%252F18.0%7Ea15%253Dfalse%7Ea16%253Den-US%7Ea17%253Dna%7Ea18%253Dsignin.ebay.com%7Ea19%253Dna%7Ea20%253Dna%7Ea21%253Dna%7Ea22%253Dna%7Ea23%253D1366%7Ea24%253D768%7Ea25%253D24%7Ea26%253D738%7Ea27%253Dna%7Ea28%253DFri%2520Jan%252025%25202013%252022%253A20%253A09%2520GMT%252B0530%2520%28India%2520Standard%2520Time%29%7Ea29%253D5.5%7Ea30%253Dpdf%257Cpdf%257Cpdf%257C%7Ea31%253Dyes%7Ea32%253Dna%7Ea33%253Dna%7Ea34%253Dno%7Ea35%253Dno%7Ea36%253Dyes%7Ea37%253Dno%7Ea38%253Donline%7Ea39%253Dno%7Ea40%253DWindows%2520NT%25206.1%253B%2520WOW64%7Ea41%253Dno%7Ea42%253Dno%7Ea43%253D&UsingSSL=1&inputversion=2&lse=true&lsv=11.5.502&mid=AQAAAThpCRHvAAUxMzg5OTM0YzA2MS5hNWFiODMyLjJmNDcyLmZmZTlhOWUwEZMPFiRFo7yUjykHfCAFgp%2Bk9%2Bk*&kgver=1&kgupg=1&kgstate=r&omid=&hmid=&rhr=f&siteid=0&co_partnerId=2&ru=&pp=&pa1=&pa2=&pa3=&i1=-1&pageType=-1&rtmData=&bUrlPrfx={0}&rqid={1}&kgct=&userid={2}&pass={3}&keepMeSignInOption=1&sgnBt=Sign+in&htmid={4}&kdata=%251E%251F%2510%251E1359132609409%251E1%251F%2510%251E1359132609409%251E0%251F%2510%251E1359132609410%251E1%251F%2510%251E1359132609410%251E0%251F%251B%251E1359132612808%251E1%251F%2510%251E1359132612837%251E1%251F%2510%251E1359132612838%251E0%251F%251B%251E1359132612977%251E0%251F", bUrlPrfx, rqid, user,pass, midParamValue);
        responseData =
            http.UploadString("https://signin.ebay.com/ws/eBayISAPI.dll?co_partnerId=2&siteid=0&UsingSSL=1", pdata);


        PrintAllCookies(cookieJar);
        Console.Read();

    }

    private static void PrintAllCookies(CookieContainer cookies)
    {
        Hashtable table = (Hashtable)cookies.GetType().InvokeMember("m_domainTable",
                                                                     BindingFlags.NonPublic |
                                                                     BindingFlags.GetField |
                                                                     BindingFlags.Instance,
                                                                     null,
                                                                     cookies,
                                                                     new object[] { });



        foreach (string key in table.Keys)
        {
            foreach (Cookie cookie in cookies.GetCookies(new Uri(string.Format("http://{0}/", key.StartsWith(".", StringComparison.Ordinal) ? "www" + key : key))))
            {
                Console.WriteLine("Name = {0} ; Value = {1} ; Domain = {2}", cookie.Name, cookie.Value,
                                  cookie.Domain);
            }
        }
    }

    public static string ParseMid(string text, string firstString, string lastString)
    {

        string str = text;
        int pos1 = str.IndexOf(firstString, StringComparison.Ordinal) + firstString.Length;
        int pos2 = str.IndexOf(lastString, pos1 + 1, StringComparison.Ordinal);
        string finalString = str.Substring(pos1, pos2 - pos1);
        return finalString;
    } 
}
名称空间观察程序 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); }

public class HTTP : WebClient
{
    public HTTP()
        : this(new CookieContainer())
    { }

    public HTTP(CookieContainer c)
    {
        CookieContainer = c;
    }
    public CookieContainer CookieContainer { get; set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);

        var castRequest = request as HttpWebRequest;
        if (castRequest != null)
        {
            castRequest.CookieContainer = CookieContainer;
            castRequest.ServicePoint.Expect100Continue = false;
            castRequest.ContentType = "application/x-www-form-urlencoded";
        }

        return request;
    }

}
我添加了一些标题,该数据包看起来与普通登录数据包类似,但仍然在lucky9或url重定向时出错?我不确定是否进一步排除此问题。我尝试使用&ru=http%3A%2F%2Fmy.ebay.com%2Fws%2FeBayISAPI.dll%3fMyeBay%26guest%3D1&pageType=3984标题修改url,但它符合什么也没做。最后一步得有人帮忙

    private void Form1_Load(object sender, EventArgs e)
    {
        CookieContainer cookieJar = new CookieContainer();
        HTTP http = new HTTP(cookieJar);
        string user = "id";
        string pass = "password";

        //some cookies are set before login & they are needed for an user to login, for that reason only you were getting the error
        string responseData = http.DownloadString("https://signin.ebay.com/ws/eBayISAPI.dll?SignIn");

        string midParamValue = ParseMid(responseData, "name=\"mid\" id=\"mid\" value=\"", "\"");
        string bUrlPrfx = ParseMid(responseData, "id=\"bUrlPrfx\" value=\"", "\"");
        string rqid = ParseMid(responseData, "id=\"bUrlPrfx\" value=\"", "\"");
        string hidUrl = ParseMid(responseData, "name=\"hidUrl\" value=\"", "\""); //"name=\"hidUrl\" value="http://my.ebay.com/ws/eBayISAPI.dll?MyeBay"
        //string lucky9 = ParseMid(responseData, 
        string pdata =
            string.Format(
                "MfcISAPICommand=SignInWelcome&bhid=a1%253Dna%7Ea2%253Dna%7Ea3%253Dna%7Ea4%253DMozilla%7Ea5%253DNetscape%7Ea6%253D5.0%2520%28Windows%29%7Ea7%253D20100101%7Ea8%253Dna%7Ea9%253Dtrue%7Ea10%253DWindows%2520NT%25206.1%253B%2520WOW64%7Ea11%253Dtrue%7Ea12%253DWin32%7Ea13%253Dna%7Ea14%253DMozilla%252F5.0%2520%28Windows%2520NT%25206.1%253B%2520WOW64%253B%2520rv%253A18.0%29%2520Gecko%252F20100101%2520Firefox%252F18.0%7Ea15%253Dfalse%7Ea16%253Den-US%7Ea17%253Dna%7Ea18%253Dsignin.ebay.com%7Ea19%253Dna%7Ea20%253Dna%7Ea21%253Dna%7Ea22%253Dna%7Ea23%253D1366%7Ea24%253D768%7Ea25%253D24%7Ea26%253D738%7Ea27%253Dna%7Ea28%253DFri%2520Jan%252025%25202013%252022%253A20%253A09%2520GMT%252B0530%2520%28India%2520Standard%2520Time%29%7Ea29%253D5.5%7Ea30%253Dpdf%257Cpdf%257Cpdf%257C%7Ea31%253Dyes%7Ea32%253Dna%7Ea33%253Dna%7Ea34%253Dno%7Ea35%253Dno%7Ea36%253Dyes%7Ea37%253Dno%7Ea38%253Donline%7Ea39%253Dno%7Ea40%253DWindows%2520NT%25206.1%253B%2520WOW64%7Ea41%253Dno%7Ea42%253Dno%7Ea43%253D&UsingSSL=1&inputversion=2&lse=true&lsv=11.5.502&mid=AQAAAThpCRHvAAUxMzg5OTM0YzA2MS5hNWFiODMyLjJmNDcyLmZmZTlhOWUwEZMPFiRFo7yUjykHfCAFgp%2Bk9%2Bk*&kgver=1&kgupg=1&kgstate=r&omid=&hmid=&rhr=f&siteid=0&co_partnerId=2&ru=&pp=&pa1=&pa2=&pa3=&i1=-1&pageType=-1&rtmData=&bUrlPrfx={0}&rqid={1}&kgct=&userid={2}&pass={3}&keepMeSignInOption=1&sgnBt=Sign+in&htmid={4}&kdata=%251E%251F%2510%251E1359132609409%251E1%251F%2510%251E1359132609409%251E0%251F%2510%251E1359132609410%251E1%251F%2510%251E1359132609410%251E0%251F%251B%251E1359132612808%251E1%251F%2510%251E1359132612837%251E1%251F%2510%251E1359132612838%251E0%251F%251B%251E1359132612977%251E0%251F", bUrlPrfx, rqid, user, pass, midParamValue);
        responseData =
            http.UploadString("https://signin.ebay.com/ws/eBayISAPI.dll?co_partnerId=2&siteid=0&UsingSSL=1", pdata);
        richTextBox1.Text = responseData;

        PrintAllCookies(cookieJar);
    }
    private void PrintAllCookies(CookieContainer cookies)
    {
        Hashtable table = (Hashtable)cookies.GetType().InvokeMember("m_domainTable",
                                                                     BindingFlags.NonPublic |
                                                                     BindingFlags.GetField |
                                                                     BindingFlags.Instance,
                                                                     null,
                                                                     cookies,
                                                                     new object[] { });

        foreach (string key in table.Keys)
        {
            foreach (Cookie cookie in cookies.GetCookies(new Uri(string.Format("http://{0}/", key.StartsWith(".", StringComparison.Ordinal) ? "www" + key : key))))
            {
                richTextBox1.AppendText("Name = " + cookie.Name.ToString() + " Value = " + cookie.Value.ToString() + "Domain = " + cookie.Domain.ToString() + "\n\n");
            }
        }
    }

    public string ParseMid(string text, string firstString, string lastString)
    {

        string str = text;
        int pos1 = str.IndexOf(firstString, StringComparison.Ordinal) + firstString.Length;
        int pos2 = str.IndexOf(lastString, pos1 + 1, StringComparison.Ordinal);
        string finalString = str.Substring(pos1, pos2 - pos1);
        return finalString;
    }
    public class HTTP : WebClient
    {
        public HTTP()
            : this(new CookieContainer())
        { }

        public HTTP(CookieContainer c)
        {
            CookieContainer = c;
        }
        public CookieContainer CookieContainer { get; set; }

        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);

            var castRequest = request as HttpWebRequest;
            if (castRequest != null)
            {
                castRequest.CookieContainer = CookieContainer;
                castRequest.ServicePoint.Expect100Continue = false;
                castRequest.ContentType = "application/x-www-form-urlencoded";
                //castRequest.AllowAutoRedirect = true;
                castRequest.Headers.Add("Cache-Control", "max-age=0");
                castRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
                castRequest.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
                //castRequest.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
                castRequest.Headers.Add("Accept-Language", "en-US,en;q=0.8");
                castRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17";

                castRequest.Headers.Add("Origin", "https://signin.ebay.com");
                castRequest.Referer = "https://signin.ebay.com/ws/eBayISAPI.dll?SignIn";
                castRequest.KeepAlive = true;
                castRequest.Host = "signin.ebay.com";
            }

            return request;
        }
    }
}
}

vjo.dsf.error.ErrorHandlerManager.register(新的vjo.dsf.error.DefaultErrorHandler());
vjo.dsf.error.ErrorHandlerManager.enableOnError(真、假);
vjo.dsf.cookie.vjcookejar.scookeDomain='.ebay.com';vjo.dsf.cookie.vjcookejar.writecokieeet('ebay','js','1');
window.location=”http://my.ebay.com/ws/eBayISAPI.dll?MyEbayBeta&MyeBay=&guest=1"
var\u GlobalNavHeaderUtf8Encoding=true,includeHost=https://secureinclude.ebaystatic.com/';
如果您看到此页面,您的浏览器设置将阻止您自动重定向到新URL。
vjo.dsf.cookie.vjcookejar.writecookiex(“幸运9”,“8067469”,730);
名称=易趣价值=###

名称=dp1值=###

名称=cssg值=###

Name=s值=###

名称=非会话值=###

名称=cid值=###

名称=ds1值=###

名称=ns1值=###

名称=秒值=###


Name=shs Value=####

我见过类似的问题。尝试将web请求上的用户代理设置为普通浏览器的代理。我在其他网站上也做过此工作。不,不是用户代理:尝试了这两个+小提琴手结果:用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.17(KHTML,像Gecko)Chrome/24.0.1312.56 Safari/537.17eBay登录稍微复杂一点!您的web浏览器设置阻止了cookie。您丢失了哪一个cookie?关闭但没有雪茄..shs、lucky9、npii、JSESSIONID、oam.Flash.RENDERMAP.TOKEN仍然不在请求端。@user209214-登录似乎工作正常!至少对我来说,我是用t登录到ebay的我的容器中有很多Cookie我相信容器中有8个Cookie。它们不断累积:请求端缺少shs、lucky9、npii、JSESSIONID、oam.Flash.RENDERMAP.TOKEN。如果您有时间/精力,我可能需要快速了解您到目前为止在代码中所做的工作。谢谢,非常感谢。是什么让它们出现在请求端?是什么在嗅探器中将它们委托给请求端的?也就是说,因为事情似乎并不总是一样的
<script type="text/javascript" src="https://secureir.ebaystatic.com/v4js/z/i5/r32gctn0fu3vjkpge2mjhij3q.js#SYS-ZAM_vjo_e809_1_Ear_en_US"></script>
<script type="text/javascript">vjo.dsf.error.ErrorHandlerManager.register(new vjo.dsf.error.DefaultErrorHandler());
vjo.dsf.error.ErrorHandlerManager.enableOnError(true, false);
vjo.dsf.cookie.VjCookieJar.sCookieDomain = '.ebay.com';vjo.dsf.cookie.VjCookieJar.writeCookielet('ebay','js','1');
</script>
<script language="JavaScript">window.location="http://my.ebay.com/ws/eBayISAPI.dll?MyEbayBeta&MyeBay=&guest=1"</script>
<div class="pagewidth">
    <div class="pageminwidth">
        <div class="pagelayout">
            <div class="pagecontainer">
                <div class="GlobalNavigation" id="GlobalNavigation"><div><script type="text/javascript">var _GlobalNavHeaderUtf8Encoding=true,includeHost='https://secureinclude.ebaystatic.com/';</script>

                <div class="CentralArea" id="CentralArea"><div>      <form name="AlertSuppressor" method="post"><input type="hidden" name="hidUrl" value="http://my.ebay.com/ws/eBayISAPI.dll?MyEbayBeta&amp;MyeBay=&amp;guest=1"></form>      <noscript><meta http-equiv="Refresh" content="0; url = http://my.ebay.com/ws/eBayISAPI.dll?MyEbayBeta&amp;MyeBay=&amp;guest=1"></noscript>
<b>If you are seeing this page, your browser settings prevent you from automatically redirecting to a new URL.</b></td></tr></table>
<div class="buttonDiv_space"><a href="http://my.ebay.com/ws/eBayISAPI.dll?MyEbayBeta&amp;MyeBay=&amp;guest=1">Continue</a>
<div class="SupportiveNavigation" id="SupportiveNavigation">
<script type="text/javascript">vjo.dsf.cookie.VjCookieJar.writeCookieEx("lucky9", "8067469", 730);
</script>