go to my website
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于登录POST请求(C#)

Posted on 2022-02-24 13:37  牧心森林  阅读(168)  评论(0)    收藏  举报

点击查看代码
/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2022/2/24
 * 时间: 10:18
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Net.NetworkInformation;
using System.Net;
using System.IO;
using System.Text;


namespace 自动登录
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		[DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
		public extern static bool InternetGetConnectedState(out int conState, int reader);
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		String encrypt_rc4(String src,String passwd)
		{
		
			int i,j=0,a=0,b=0,c=0, temp;
			String tempString;
			int  plen = passwd.Length;
            int size = src.Length;
            byte[] buffer;
			src=src.Trim();
			passwd = passwd.Trim();
    		
			

			int[] key = new int[256]; //int
            int[] sbox = new int[256]; ; //int
            String[] output = new String[size]; //code of data
             for (i = 0; i < 256; i++) {
            	
            	buffer = System.Text.Encoding.ASCII.GetBytes(passwd.Substring(i% plen,1).ToString());           
            	key[i]=Int32.Parse(String.Format("{0:X2}",buffer[0]),System.Globalization.NumberStyles.HexNumber);        	
            	sbox[i] = i;
             }
             for (i = 0; i < 256; i++) {
             	j = (j + sbox[i] + key[i]) % 256;
             	temp = sbox[i];
             	sbox[i] = sbox[j];
             	sbox[j] = temp;
             }
             for (i = 0; i < size; i++) {
             	a = (a + 1) % 256;
             	b = (b + sbox[a]) % 256;
             	temp = sbox[a];
             	sbox[a] = sbox[b];
             	sbox[b] = temp;
             	c = (sbox[a] + sbox[b]) % 256;
             	buffer = System.Text.Encoding.ASCII.GetBytes(src.Substring(i,1).ToString());
             	
             	temp = (Int32.Parse(String.Format("{0:X2}",buffer[0]),System.Globalization.NumberStyles.HexNumber)) ^ sbox[c];//String.fromCharCode(src.charCodeAt(i) ^ sbox[c]);
             	tempString = Convert.ToString(temp,16);
             	if (tempString.Length == 1) {
             		tempString = "0" + temp;
             	} else if (tempString.Length == 0) 
             	{
             		tempString = "00";
             	}
             	output[i] = tempString;
             }
            return String.Join("",output);
		}
				
		
		
		bool netconnected(out int i)
		{
			
			if(!InternetGetConnectedState(out i,0))return false;
		    Ping ping = new Ping();
            PingReply reply = ping.Send("www.baidu.com");//百度IP
            return reply.Status == IPStatus.Success;
		}
		
		String timeStamp()
		{
		
			DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
			long time = (long)(DateTime.Now - startTime).TotalMilliseconds; // 相差毫秒数
			return time.ToString();
			
		}
		
		String sendPost(String strURL,String data)
		{
		
		    Util.SetCertificatePolicy();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
            request.Method = "POST";            
            request.ContentType = "application/json;charset=utf-8";        

            byte[] param = System.Text.Encoding.UTF8.GetBytes(data);
            request.ContentLength = param.Length;
            System.IO.Stream writer = request.GetRequestStream();
            writer.Write(param, 0, param.Length);
            writer.Close();
            System.Net.HttpWebResponse response;
            try
            {
                response = (System.Net.HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (System.Net.HttpWebResponse)ex.Response;
            }

            StreamReader myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
            //返回的结果
            string strResult = myreader.ReadToEnd();
            myreader.Close();
            return strResult;
		}
		
		
		void Button1Click(object sender, EventArgs e)
		{
			if(button1.Text=="启动")
			{
				button1.Text="停止";
			}
			else
			{
				button1.Text="启动";
			}
		}
		void Button2Click(object sender, EventArgs e)
		{
			String dat=timeStamp();
			String pwd=encrypt_rc4("xinzilee87",dat);
			String data=String.Format("opr: {0},userName: {1},pwd: {2},auth_tag:{3}","pwdlogin","123777",pwd,dat);
			data="{"+data+"}";
			String ret=sendPost("https://1.1.1.2/homepage/login.php",data);
			this.richTextBox1.Text=ret;
		}
	}
}

点击查看代码
/*
 * 由SharpDevelop创建。
 * 用户: Administrator
 * 日期: 2022/2/24
 * 时间: 13:02
 * 
 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;

namespace 自动登录
{
	/// <summary>
	/// Description of Util.
	/// </summary>
	public  static class Util
	{
		// <summary>
        /// Sets the cert policy.
        /// </summary>
        public static void SetCertificatePolicy()
        {
            ServicePointManager.ServerCertificateValidationCallback
                       += RemoteCertificateValidate;
        }

        /// <summary>
        /// Remotes the certificate validate.
        /// </summary>
        private static bool RemoteCertificateValidate(
           object sender, X509Certificate cert,
            X509Chain chain, SslPolicyErrors error)
        {
            // trust any certificate!!!
            System.Console.WriteLine("Warning, trust any certificate");
            return true;
        }
	}
}