有个蛋疼的需求。。让aspx能运行另一个website某个aspx页面按钮的点击事件的函数 (还不能修改那个website)
所以我就想可以模拟一个HTTP POST REQUEST 去那个页面但是你懂得 aspx页面好多参数 我以前做过类似的 还得自己研究那些POST参数 让网站那边认为是用户通关浏览器点那个按钮 并执行方法请问有没有做好的cs代码 能帮我发出这个post request。就是纠结那些post request的参数

解决方案 »

  1.   

    你需要知道这些Post参数的含义,才可以post过去被正确解析
    lz可以参考淘宝api,里面有类似的demo
      

  2.   

    aspx的提交都是加密的,要想模拟只能考滤用WebBrowser
    参考下边代码修改
        public class GHtmlToImage
        {
            /// <summary>
            /// 地址
            /// </summary>
            private string _url = "about:blank";
            /// <summary>
            /// 宽
            /// </summary>
            private int _width = 800;
            /// <summary>
            /// 高
            /// </summary>
            private int _height = 600;
            /// <summary>
            /// 缩略图宽
            /// </summary>
            private int _swidth = 320;
            /// <summary>
            /// 缩略图高
            /// </summary>
            private int _sheight = 250;        private Bitmap _image;
            private Bitmap _thumbnailimage;
            private object _lock = new object();
            private object _lock2 = new object();
            private string _charset = "utf-8";
            public string Url
            {
                set { _url = value; }
            }
            public int Width
            {
                set { _width = value; }
            }
            public int Height
            {
                set { _height = value; }
            }
            public int SWidth
            {
                set { _swidth = value; }
            }
            public int SHeight
            {
                set { _sheight = value; }
            }
            public Bitmap Image
            {
                get { return _image; }
            }
            public Bitmap ThumbnailImage
            {
                get { return _thumbnailimage; }
            }
            public string DocText
            {
                get;
                set;
            }
            public int runtime
            {
                get;
                set;
            }
            public GHtmlToImage()
            {
                Thread.CurrentThread.CurrentUICulture =  Thread.CurrentThread.CurrentCulture;
            }
            public string Charset
            {
                set
                {
                    _charset = value; ;
                }
            }
            /*
            [STAThreadAttribute]
            static void Main()
            {
                
            }
             */ 
            public void Init()
            {
                
                lock (_lock)
                {
                    
                    Thread _thread = new Thread(new ThreadStart(_GenerateHtmlToImgImage));
                    _thread.Name = "Galsun.Fcx.htmlToImage";
                    _thread.SetApartmentState(ApartmentState.STA);
                    _thread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
                    _thread.Start();
                    _thread.Priority = ThreadPriority.Highest;
                    TimeSpan ts = new TimeSpan(0, 0, 0, 30);
                    _thread.Join();
                   
                    GC.Collect();
                    GC.Collect();
                }
            }
            [STAThread]
            private void _GenerateHtmlToImgImage()
            {
                
                Monitor.Enter(this);
                try
                {
                    #region 普通
                    WebBrowser _WebBrowser = new WebBrowser();
                    _WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
                    //_WebBrowser.ProgressChanged += new WebBrowserProgressChangedEventHandler(WebBrowser_ProgressChanged);
                    _WebBrowser.ScrollBarsEnabled = false;
                    
                    _WebBrowser.Navigate(_url);
                    System.Windows.Forms.Timer _tm = new System.Windows.Forms.Timer();
                    _tm.Interval=1000;
                    _tm.Tick += new EventHandler(Time_Tick);
                    _tm.Enabled = true;
                    //Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run();
                    //Application.EnableVisualStyles();
                    
                    
                    _WebBrowser.Dispose();
                    
                    #endregion                #region 新模式
                    /*
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    MainForm _form = new MainForm();
                    _form._url = _url;
                    _form._width = _width;
                    _form._height = _height;
                    _form._swidth = _swidth;
                    _form._sheight = _sheight;
                    _form.Width = _width;
                    _form.Height = _height;
                    Application.Run(_form);
                    _image = _form._image;
                    _thumbnailimage = _form._thumbnailimage;
                     */ 
                    #endregion
                }
                finally
                {
                    Monitor.Exit(this);            }
            }
            private void Time_Tick(object sender, EventArgs e)
            {
                if (runtime > 0)
                {
                    Thread.Sleep(100);
                    Application.ExitThread();
                }
            }
            private void WebBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
            {
                WebBrowser _webBrowser = (WebBrowser)sender;
                if (e.CurrentProgress == e.MaximumProgress && _webBrowser.ReadyState == WebBrowserReadyState.Complete)
                {
                    Application.ExitThread();
                }
            }
            private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                Monitor.Enter(this);
                try
                {
                    
                    WebBrowser _webBrowser = (WebBrowser)sender;
                    
                    if (_webBrowser.ReadyState == WebBrowserReadyState.Complete)
                    {
                        //_webBrowser.Document.Encoding = "utf-8";
                         //_charset = _webBrowser.Document.Encoding;
                         //DocText = _webBrowser.DocumentText;
                         //DocText = Encoding.GetEncoding("utf-8").GetString(Encoding.GetEncoding("gbk").GetBytes(_webBrowser.DocumentText));
                        //Content.GB2312UnicodeConverter.ToUnicode(DocText);
                        StreamReader sr;
                        sr = new StreamReader(_webBrowser.DocumentStream, Encoding.GetEncoding(_charset));
                        DocText  = sr.ReadToEnd();
                        sr.Close();
                        if(_webBrowser.Document.Body.ScrollRectangle.Height> _height)
                        {
                            _height=_webBrowser.Document.Body.ScrollRectangle.Height;
                        }
                        _webBrowser.ClientSize = new Size(_width, _height);
                        //_webBrowser.ScrollBarsEnabled = false;
                        //Application.DoEvents();
                        _image = new Bitmap(_webBrowser.Bounds.Width, _webBrowser.Bounds.Height);
                        _webBrowser.BringToFront();
                        _webBrowser.DrawToBitmap(_image, _webBrowser.Bounds);
                        _thumbnailimage = (Bitmap)_image.GetThumbnailImage(_swidth, _sheight, null, IntPtr.Zero);
                        runtime++;
                    }
                    
                }
                finally
                {
                    Monitor.Exit(this);
                }
            }    }
      

  3.   

    这个是自动投注的代码,结合两者,应该就可以实现了
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.IO;
    using System.Text.RegularExpressions;
    using mshtml;namespace Galsun.QHL
    {
        public partial class Form_C : Form
        {
            public string _weburl = string.Empty;
            public string _lastNum = string.Empty;
            public string _lastCycle = string.Empty;
            public int _starCycle;
            public int _endCycle;
            public string _lastTime = string.Empty;
            public string _history = string.Empty;
            public int _time = 0;
            public bool _chang = false;
            public DataGridView dgv_Reg;
            public DataGridView dgv_Log;
            public TextBox TB_Base;
            public TextBox txt_double;
            public TextBox txt_Back;
            public Label lb_total;
            public string _CycleUrl = "";
            public int _backtime = 0;
            public Form_C()
            {
                InitializeComponent();
            }
            /*
            string GetResStr(string url, string Encod)
            {
                WebRequest WReq;
                WebResponse WResp;
                StreamReader sr;
                WReq = WebRequest.Create(url);
                WResp = WReq.GetResponse();
                sr = new StreamReader(WResp.GetResponseStream(), Encoding.GetEncoding(Encod));
                string retValue = sr.ReadToEnd();
                sr.Close();
                return retValue;
            }*/
            private void Form_C_Load(object sender, EventArgs e)
            {
                PageRefresh();
                time_Refresh.Enabled = true;
            }
            private void PageRefresh()
            {
                //time_Refresh.Enabled = false;
                //webBrowser1.Url = webBrowser1.Url;
                _time = 0;
                webBrowser1.Navigate("http://www.kt02.com/play/7Gourd/map.asp?no-cath=" + DateTime.Now.ToString("yyyyMMddHHmmss"));
            }        private string GetLastNum()
            {
                Regex reg = new Regex(@"var tempstr=""(?<Cycle>[\s\S].*)"";");
                Match mt = reg.Match(_history);
                return mt.Groups["Cycle"].Value;
            }        private void time_Refresh_Tick(object sender, EventArgs e)
            {
                _time = _time + 1;
                if (_time > 10)
                {
                    PageRefresh();
                }
            }        private void webBrowser2_Navigated(object sender, WebBrowserNavigatedEventArgs e)
            {
                IHTMLWindow2 win = (IHTMLWindow2)webBrowser2.Document.Window.DomWindow;
                string s = @"function confirm(mess) {";
                s += @"return true;";
                s += @"}";
                
                s += @"function alert(mess) {}";
                  
                win.execScript(s, "javascript");
                /*
                IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
                vDocument.parentWindow.execScript(
                    "chk_(0)", "javaScript");
                 */ 
            }        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                object tlock = new object();
                lock (tlock)
                {
                    StreamReader sr = new StreamReader(webBrowser1.DocumentStream, Encoding.GetEncoding("gb2312"));
                    _history = sr.ReadToEnd();
                    string _arystr = GetLastNum();
                    if (_arystr.Length > 0)
                    {
                        string[] ary_datalist = _arystr.Split('|');
                        if (ary_datalist.Length > 0)
                        {
                            string[] ary_item = ary_datalist[0].Split(',');
                            if (_lastCycle.Trim() == ary_item[0].Trim())
                            {
                                time_Refresh.Enabled = true;
                                return;
                            }
                            else
                            {
                                
                                
                                if (_lastNum != string.Empty)
                                {
                                    string getNumList = dgv_Reg.Rows[int.Parse(_lastNum) - 1].Cells["TZNum"].Value.ToString();
                                    if (getNumList.Contains(ary_item[2].Trim()))
                                    {
                                        lb_total.Text = TB_Base.Text;
                                        _backtime = 0;
                                    }
                                    else
                                    {
                                        lb_total.Text = (int.Parse(lb_total.Text.Trim()) * double.Parse(txt_double.Text.Trim())).ToString();
                                        _backtime = _backtime + 1;
                                        if (_backtime > int.Parse(txt_Back.Text.Trim()))
                                        {
                                            _backtime = 0;
                                            lb_total.Text = TB_Base.Text;
                                        }
                                    }
                                    
                                }
                                 
                                _lastCycle = ary_item[0].Trim();
                                _lastTime = ary_item[1].Trim();
                                _lastNum = ary_item[2].Trim();
                                _chang = false;
                                if (int.Parse(_lastCycle) > _starCycle && int.Parse(_lastCycle) < _endCycle)
                                {
                                    time_Refresh.Enabled = false;
                                    _CycleUrl = "http://www.kt02.com/play/7Gourd/insert.asp?bnumber=" + (int.Parse(_lastCycle) + 1);
                                    webBrowser2.Navigate(_CycleUrl);
                                }
                            }                    }
                    }
                    //time_Refresh.Enabled = true;
                }
            }        private void webBrowser2_ControlAdded(object sender, ControlEventArgs e)
            {
                
            }        private void webBrowser2_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
            {
                if (e.CurrentProgress == e.MaximumProgress)
                {
                    HtmlElement table = webBrowser2.Document.All["insTable"];
                    if (table != null && !_chang)
                    {
                        _chang = true;
                        string getNumList = dgv_Reg.Rows[int.Parse(_lastNum) - 1].Cells["TZNum"].Value.ToString();
                        int deposit = int.Parse(lb_total.Text.Trim()) / getNumList.Split(',').Length;
                        HtmlElementCollection tr = table.GetElementsByTagName("tr");
                        for (int i = 1; i < tr.Count; i++)
                        {
                            if (getNumList.Contains(i.ToString()))
                            {                            foreach (HtmlElement tag in tr[i].GetElementsByTagName("input"))
                                {
                                    if (tag.GetAttribute("name") == "ck_")
                                    {
                                        tag.InvokeMember("click");
                                    }
                                    if (tag.GetAttribute("name") == "SMONEY")
                                    {
                                        tag.SetAttribute("value", deposit.ToString());
                                    }
                                    if (tag.GetAttribute("name") == "Submit")
                                    {
                                        tag.InvokeMember("click");
                                    }
                                    if (tag.GetAttribute("name") == "Submit2")
                                    {
                                        tag.InvokeMember("click");
                                    }
                                }                            dgv_Log.Rows.Insert(0, new object[] { DateTime.Now.ToString(), (int.Parse(_lastCycle) + 1), i.ToString() + "投" + deposit.ToString() });
                            }
                        }
                        foreach (HtmlElement tag in webBrowser2.Document.GetElementsByTagName("input"))
                        {
                            if (tag.GetAttribute("value") == "确认投注")
                            {
                                tag.InvokeMember("click");
                                break;
                            }
                        }
                        PageRefresh();
                        time_Refresh.Enabled = true;
                    }
                }
            }        private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {            PageRefresh();
                time_Refresh.Enabled = true;
            }    }
    }
      

  4.   

    LS 就是一个普通aspx控件的按钮 没有任何的textbox在那个网页。就像模拟点击那个按钮
    我知道要分析其实的参数 但是如果已知是一个aspx控件的按钮 只要知道按钮的ID是不是就可以了
      

  5.   

                    foreach (HtmlElement tag in webBrowser2.Document.GetElementsByTagName("input"))
                        {
                            if (tag.GetAttribute("value") == "确认投注")
                            {
                                tag.InvokeMember("click");
                                break;
                            }
                        }这个是关键,这里是根据按钮名称来执行,如果找到"确认投注",就执行他的click事件
      

  6.   

    你把点击按钮时候传递的参数搞下来,然后http提交即可
      

  7.   

    就直接POST就好,参数应该不多吧。
      

  8.   

    aspx参数很复杂的汗我知道怎么使用httpwebrequest...
      

  9.   

    参数不复杂就多了两个
    __EVENTVALIDATION
    __VIEWSTATE
    这个只是内容长一点其它的跟普通网站就一般的了。