using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using ServiceStack.Common;
using ServiceStack.Text;
using System.IO;
using System.Net;
namespace Sina
{
class Program
{
static void Main(string[] args)
{
//step1 获取登录参数
var stepUrl = @"http://login.sina.com.cn/sso/prelogin.php?entry=sso&callback=sinaSSOController.preloginCallBack&su=tang_guoan@163.com&rsakt=mod&client=ssologin.js(v1.4.4)";
var stepData = stepUrl.GetJsonFromUrl();
//stepData=sinaSSOController.preloginCallBack({"retcode":0,"servertime":1382160006,"pcid":"gz-4c4f8847a4eb74232e0dd998388f6354b59e","nonce":"I6QPVA","pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443","rsakv":"1330428213","exectime":1})
var s = Convert.ToInt32("10001",16);
//step2解析参数
var startIndex = stepData.IndexOf("(");
stepData = stepData.Substring(startIndex + 1, stepData.Length - startIndex - 1);
JsonSerializer<SinaPara> jsonSerializer = new JsonSerializer<SinaPara>();
var sinaPara = jsonSerializer.DeserializeFromString(stepData);
//step3 构建登录参数
var userName = ""; //Base64.Base64Code("=");
var encryptContent =sinaPara.servertime+ "\t"+sinaPara.nonce+"\n"+"";
var length = sinaPara.pubkey.Length;
var strEncrypt = RSAEncrypt(sinaPara.pubkey, "010001", encryptContent);
var passWord = StringToHex(strEncrypt);
var para = new Dictionary<string, string>
{
{"entry","weibo"},
{"gateway","1"},
{"from",""},
{"savestate","7"},
{"userticket","1"},
{"ssosimplelogin","1"},
{"pagerefer","http://login.sina.com.cn/sso/logout.php?entry=miniblog&r=http%3A%2F%2Fweibo.com%2Flogout.php%3Fbackurl%3D%252F"},
{"vsnf","1"},
{"su",userName},
{"service","miniblog"},
{"servertime",sinaPara.servertime},
{"nonce",sinaPara.nonce},
{"pwencode","rsa2"},
{"sp",passWord},
{"encoding","utf-8"},{"prelt","158"},{"rsakv",sinaPara.rsakv},{"url",@"http://weibo.com/ajaxlogin.php?framelogin=1\&callback=parent.sinaSSOController.feedBackUrlCallBack"},
{"returntype","META"}
};
var paraJson = new JsonSerializer<Dictionary<string, string>>().SerializeToString(para);
StringBuilder sb = new StringBuilder();
foreach (var item in para)
{
sb.Append("&" + item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value));
}
var strp = sb.ToString();
strp = strp.Substring(1, strp.Length - 1);
byte[] postbyte = System.Text.Encoding.Default.GetBytes(paraJson);
var loginUrl = @"http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)";
var re = requestPost(strp, loginUrl);
Console.WriteLine( re);
var str = "http://weibo.com/u/2510062424/home?wvr=5&lf=reg".GetStringFromUrl();
Console.WriteLine(str);
Console.Read();
Console.Read();
}
public static string requestPost(string postData, string uriStr)
{
HttpWebRequest requestScore = (HttpWebRequest)WebRequest.Create(uriStr);
//postData =
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(postData);
requestScore.Method = "Post";
requestScore.ContentType = "application/x-www-form-urlencoded";
requestScore.ContentLength = data.Length;
requestScore.KeepAlive = true;
requestScore.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36";
requestScore.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
requestScore.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
requestScore.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
//使用cookies
//requestScore.CookieContainer = ...;
Stream stream = requestScore.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
HttpWebResponse responseSorce = (HttpWebResponse)requestScore.GetResponse();
StreamReader reader = new StreamReader(responseSorce.GetResponseStream(), Encoding.UTF8);
string content = reader.ReadToEnd();
requestScore = null;
responseSorce.Close();
responseSorce = null;
reader = null;
stream = null;
return content;
}
public static string StringToHex(string str)
{
//str = str.Trim();
byte[] ByteFoo = System.Text.Encoding.Default.GetBytes(str);
string TempStr = "";
foreach (byte b in ByteFoo)
{
TempStr += b.ToString("x"); //X表示十六进制显示
}
return TempStr;
}
public static string RSAEncrypt(string publickey, string rsakv, string content)
{
// publickey = @"<RSAKeyValue><Modulus>" + publickey + "</Modulus><Exponent>" + rsakv + "</Exponent></RSAKeyValue>";
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] cipherbytes;
RSAParameters rsaParameters = new RSAParameters()
{
Exponent = FromHex(rsakv), // new byte[] {01, 00, 01}
Modulus = FromHex(publickey), // new byte[] {A3, A6, ...}
};
rsa.ImportParameters(rsaParameters);
//rsa.FromXmlString(publickey);
cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content),false);
return Convert.ToBase64String(cipherbytes);
}
static byte[] FromHex(string hex)
{
if (string.IsNullOrEmpty(hex) || hex.Length % 2 != 0) throw new ArgumentException("not a hexidecimal string");
List<byte> bytes = new List<byte>();
for (int i = 0; i < hex.Length; i += 2)
{
bytes.Add(Convert.ToByte(hex.Substring(i, 2), 16));
}
return bytes.ToArray();
}
}
public class SinaPara
{
public int retcode { get; set; }
public string servertime { get; set; }
public string pcid { get; set; }
public string nonce { get; set; }
public string pubkey { get; set; }
public string rsakv { get; set; }
public int exectime { get; set; }
}
}
相关推荐
xenomai内核解析--嵌入式实时linux概述
Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...
typeScript知识点之接口的定义和使用
前言 typescript中的接口。跟java中的用法基本上是一样的,跟类也有类似的地方,比较简单,其目的也是为了规范代码,例如定义一个属性接口,则传入的数据必须包含这些字段,如果定义一个方法的接口,则实现他的类必须实现他的所有方法。 属性类接口 属性类接口,就是定义一个接口,里面有n个字段,然后作为参数,或者结果接受,这样可以规范参数的名称和类型。 传统的typescript中是这样写的 function printLabel(label:string):void { console.log('p
FDTD Solutions-入射波长模式
经常在文献中看到仿真光源使用TM/TE模式,这个确定是十分必要的,决定了仿真结果。 但是也不能局限于选择TM/TE,因为不同领域、不同软件之间的使用习惯和命名可能不同。并且在现代光波导器件中,几乎全部 都是混合模式,或者称之为quasi-TE(准TE模式)和quasi-TM(准TM模式),多数情况下都简称为TE模式和TM模式。要知道 到底是TE模式还是TM模式,需要查看其电场的主分量(即振幅...
MySql结果集替换关键字
MySql结果集替换关键字 MySql中结果集替换关键字代码如下: 未替换前:XXXXXAAA replace(字段,'AAA','') as name 替换后:XXXXX
STP生成树/BPDU保护小实验
HCIA部分—STP生成树小实验 实验环境如图所示,要求: 1.在SW1上配置为根桥,使SW3的G0/0/1口作为根端口 2.在SW1的G0/0/3配置为边缘端口 3.若在SW1的G0/0/3口收到BPDU,能自动关闭该端口 4.通过配置bpdu保护,使端口能自动恢复up状态 首先,我们可以通过命令dis stp brief或者dis stp命令来得知SW1在生成树中的角色 确认SW1为非根交换机,此时可以通过修改stp优先级来让SW1成为根桥: 优先级数值缺省为32768,数值越小,优先级越高,数值
【G4基础08】GPS-2-Macro Commands宏命令
GPS-2
gxcvvvvvvvvvvvvvvvvvvv
<br />xxxxxxxxxxxxxxxxxxxxxxxxxxxxxcvbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
【Scratch考级100图】图01-等级考试scratch绘 画正方形
一、案例介绍 小朋友们应该在数学课或者平时生活中有了解过正方形,正方形在我们生活中到处可见,那我们如果通过Scratch软件来绘制一个正方形呢,我们一起来学习一下吧,在舞台正中央绘制一个边长为200的正方形,要求: 1、围绕舞台中心绘制正多边形,均匀分布在四个象限中 2、正方形边长为200个单位,线条粗细、颜色自定 3、利用画笔绘制正方形,不能有多余的线条 二、案例演示 【Scratch案例演示】Scratch图1-画正方形 三、案例分析 当我们点击小绿旗启动程序后,舞台上会出现一个画
asp防止cc攻击的代码
【代码】asp防止cc攻击的代码。
在Windows10上安装WSL2
WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。
【异常】Warp终端AI功能403封禁报错I‘m sorry, I couldn‘t complete that request.Request failed with error: ErrorSta
本文针对Warp终端出现的AI功能定向封禁报错,完整还原脱敏后的报错信息、深度解读报错本质,并提供分优先级的全流程可落地解决方案,可直接用于技术排查、内部知识库归档。
www.akmwzjt.net/index.php,FuseQRCode/index.html at 0221cc7b6cdc5324c71e1e2f67df0e1c466577f0 · Liam02...
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUYAAABuCAIAAADUPS1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAGwWSURBVHja7L1plJ3VdSZ...
YOLOv11涨点改进 | 首发全网创新、主干改进篇 | AAAI 2026 | PartialNet 主干让 YOLOv11 更加强大!引入部分通道机制 和 部分注意力卷积,全方面提升了模型的性能
本文提出PartialNet主干网络改进YOLOv11的方法,通过部分通道机制(PCM)和部分注意力卷积(PATConv)提升模型效率。PartialNet将特征图通道拆分并应用不同操作,显著减少计算量和内存占用。主要创新包括:1)部分通道机制实现计算优化;2)三种注意力模块(PATch/PATsp/PATsf)增强特征提取;3)动态部分卷积(DPConv)自适应调整计算复杂度。文章详细提供了代码实现和YOLOv11集成方法。
aa aaaaaaaaaaaaa
aaaaaaa。
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
AAAAAAAAAAAAA
ADSFDFA
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
3701



被折叠的 条评论
为什么被折叠?



