Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 1.61 KB

核心技术.md

File metadata and controls

63 lines (47 loc) · 1.61 KB

核心技术

​ 小工具也要花时间去研究细节问题。

登录

​ 采用CefSharp的ChromiumWebBrowser控件,跳转到qzone.qq.com,让用户正常登录。

继承cookie并用于get/post

​ 使用ChromiumWebBrowser控件的cookie,用WebClient类来get/post操作

private void CopyCookie(ChromiumWebBrowser src, WebClient dst)
{
	var cookies = src.GetCookieManager().VisitAllCookiesAsync().Result;
	string strcookies = "";
	foreach (var cookie in cookies)
	{
		strcookies += cookie.Name + "=" + cookie.Value + ";";
	}
	dst.Headers.Add("Cookie", strcookies);
}

g_tk参数

登录后从WebBrowser控件的cookie里拿到p_skey字段,计算出g_tk

  	private int GetG_TK(string p_skey)
  	{
  		string e = p_skey;
  		var t = 5381;
  		for (int n = 0, r = e.Length; n < r; ++n)
  		{
  			t += (t << 5) + e[n];
  		}
  		return t & 0x7FFFFFFF;
  	}  

相册图片质量和格式

  • 质量:从相册列表里拿到的图片url,有多种质量可选,直接修改url的相关参数。

    • /a/是最小图片
    • /m/是预览图,在相片对象的pre属性里,也就是相册封面正常图片。
    • /b/是大图,在相片对象的url属性里。
    • /r/是原图,在相片对象的raw属性里。
  • 格式:也是修改url里的参数。

    • t=5是webp格式

    • d=0是jpge格式

    • d=1是流格式,此时可以从返回的Header里得到以下信息:

      Content-Type: application/octet-stream
      Content-Disposition: attachment; filename=default.jpeg
      

      可以拿到原图的具体格式,并且以流方式传输,可以保证图片质量。