一、c# WebView2简介
  1.一开始使用WebBrowser,因为WebBrowser控件使用的是ie内核,经过修改注册表切换为Edge内核后,
发现Edge内核版本较低,加载一些视频网站提示“浏览器版本过低“,”视频无法加载“。

2.WebBrowser内核版本与WebView2比较

WebBrowser内核版本:
内核版本 (Version) Edge 18.9200 兼容 WebKit 537.36  Chrome 70 
UserAgent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.9200

当前Edge内核版本:
内核版本 (Version)    WebKit 537.36  Chrome 111.0.0.0
UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54

WebView2内核版本:
内核版本 (Version)    WebKit 537.36  Chrome 111.0.0.0
UserAgent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51

可见,WebView2内核版本跟Edge一样,能顺利打开视频网站。WebBrowser内核版本过低。

WebView2加载视频网站

3.WebView2概述
  Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容。
虽说无法跨平台,但是在windows应用下做为原浏览器控件替代品还是不错的。

4.安装webview2
   打开NuGet,搜索WebView2,安装之后,可以看到左侧就有了webview2控件,可以直接拖到窗体内。

二、问题分析
1、关于登陆会话的问题
网页端必须打开小红书网站。小红书打开后,在浏览器Cookie里,有一个字段:
web_session=040069b3b3f6625dade26f8d1d364b44f72186
这是记录登陆会话信息的。请求时headers中需要x-s、x-t,cookie中需要有web_session。
经测试,这个web_session会在浏览器保存一段时间,具体多久还有待验证(B站也有个类似的session,是一个月)。其它字段无关紧要。
不使用WebView2打开网站的话,需要到网站申请web_session,这里WebView2已经替我们弄好了。
通过c# WebView2获取cookie信息的方法:

private Dictionary<string, string> mCookies = new Dictionary<string, string>();//保存Cookie到字典中/// <summary>/// WebView2异步获取cookie/// </summary>/// <param name="url">与cookie关联的域名</param>private async void getCookie(string url){List<CoreWebView2Cookie> cookieList = await webView.CoreWebView2.CookieManager.GetCookiesAsync(url);mCookies.Clear();for (int i = 0; i < cookieList.Count; ++i){CoreWebView2Cookie cookie = webView.CoreWebView2.CookieManager.CreateCookieWithSystemNetCookie(cookieList[i].ToSystemNetCookie());mCookies.Add(cookie.Name, cookie.Value);}}/// <summary>/// 提取cookie中的一个字段;/// </summary>/// <param name="url">域名</param>/// <param name="key">关键字,如:web_session</param>/// <param name="t">延时(没用到)</param>/// <returns></returns>public string getCookieEx(string url, string key, int t){getCookie(url);if (mCookies.ContainsKey(key)){string cookies = "";foreach (var cookie in mCookies){cookies += cookie.Key + "=" + cookie.Value + ";";}cookies = key + "=" + mCookies[key];return cookies;}return null;}

2.笔记信息接口

目前笔记信息接口: /api/sns/web/v1/feed
请求时headers中需要x-s、x-t,cookie中需要有web_session。

3.X-S
定位方法很多,可以全局搜 "X-s" 。往上找可以发现该段为 sign 方法,function sign(e, t) {}

全部复制到本地,然后根据报错把缺的方法和环境补一下,比如a0_0x4dee00、a0_0x5c27、a0_0x543e等方法,

然后把常用的navigator、location、document、window加上就好了。

该过程中根据具体错误再调试分析, 比如sign方法的 case "6",修改为var vr = window 、在case "7"中可以手动修改为 dr = ur['sNYMU']
这里已经拿到了function sign(e, t) {}的JavaScript版,需要的+v:byc6352

三.解析原理及流程

  1、获取小红书笔记分享链接
Meta发布了一篇小红书笔记,快来看吧!

c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月29日】相关推荐

  1. 小红书网页版timestamp2

    小红书PC网页版,请求需要携带cookie. 案例链接:https://www.xiaohongshu.com 注意:本文内容已失效,新版分析 <小红书 timestamp2 (2022/04/ ...

  2. 小红书去水印代码_小红书无水印图片,无水印视频解析下载,小红书视频图片去水印代码实现...

    以从小红书"复制链接"出来的一个地址为例,例如: http://xhslink.com/JDk1s 下面用PHP代码来实现提取图集,具体代码如下: $userAgent = &qu ...

  3. 小红书网红博主,视频类最新榜单

    互联网时代,短视频仍是流量风口,以UGC图文起家的小红书怎么推广?有流量分配吗?首先,我们看一下小红书数据分析工具千瓜数据发布的7月最新小红书榜单. 在小红书多元化发展下,从以彩妆.护肤分享为主,到个 ...

  4. Python+Selenium-4:模拟用户登录QQ网页版

    Python+Selenium-4:模拟用户登录QQ网页版 ​ QQ网站 : 点击直达 需求:点击右上角登录,再使用密码登录QQ 代码实例 from selenium import webdriver ...

  5. (转)【最新】抖音相关工具合集--在线观看,网页版,去水印下载视频,下载音乐,音乐榜单等

    抖音去水印:https://welltool.net 这个工具除了支持单视频去水印,还支持用户发过的视频,抖音话题视频列表,使用音乐发过的视频列表批量下载 除了下载无水印视频,还是支持下载背景音,视频 ...

  6. html5动画怎么做成gif,一种网页版的调用html5视频录制动画GIF图像的方法与流程...

    本发明涉及WEB开发与应用技术领域,特别涉及一种网页版的调用html5视频录制动画GIF图像的方法. 背景技术: GIF 格式指的是图像交换格式(Graphics Interchange Format ...

  7. 梦幻模拟战更新服务器正在维护,4月29日更新维护公告

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 4月29日更新维护公告 揭示的哲学开启,海伦娜全新皮肤来袭:素体改造计划启动,限定召唤卡池降临!指挥官们,准备好接受挑战了吗? 服务器将在4月29日6:0 ...

  8. 互联网日报 | 3月24日 星期三 | 百度在港交所挂牌上市;B站预计3月29日登陆港交所;新浪宣布完成私有化合并...

    今日看点 ✦ 快手发布上市后首份财报:2020年营收587.8亿元,电商GMV达3812亿元 ✦ 百度正式在港交所二次挂牌上市,总市值达7129亿港元 ✦ B站:最终发售价确定为每股808港元,将于3 ...

  9. winform模拟登陆网页_【教程】模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码)...

    之前已经介绍过了网络相关的一些基础知识了: 以及简单的网页内容抓取,用C#是如何实现的: 现在接着来介绍,以模拟登陆百度首页: 为例,说明如何通过C#模拟登陆网站. 不过,此处需要介绍一下此文前提: ...

最新文章

  1. 【阿里云大学课程】前端必知——HTML5新特性完整视频教程(音频、视频、画布、web存储、动画……)...
  2. centos7 hadoop 2.8安装
  3. sql服务找不到服务器,我找不到SQL服务管理器
  4. 移动开发者选项手机如何打开真机调试模式
  5. 习题2.4 递增的整数序列链表的插入(15 分)浙大版《数据结构(第2版)》题目集...
  6. linux 中阻塞与非阻塞 同步与异步
  7. layui跨域问题的解决
  8. Go语言之进阶篇请求报文格式分析
  9. MATLAB 2017 b 安装+下载+破解(win10,linux,mac)
  10. PS2022安装教程(附个人详细安装教程)
  11. 3dMax 以物体为中心旋转视图、移动视图中心
  12. Hans Berger脑电图之父的人生摘要
  13. 建筑设计全过程碳排放计算与案例分析
  14. 魔兽世界8.0哪个服务器稳定,魔兽世界活得最安逸的BOSS!8.0版本才拿到7.0服务器首杀!...
  15. the owning Session was closed
  16. 华为开发者大会2022直播攻略请查收!
  17. Linux驱动01 - Timer
  18. Mac电脑的效率超高的输入法,自动切换输入法
  19. [UnityShader入门精要读书笔记]37.水波效果
  20. 腾讯35万年薪难求才 都去了微软和谷歌

热门文章

  1. java中有那三种技术平台_Java语言有三种技术平台,分别是JavaSE、JavaME、JavaEE()...
  2. 人工智能、机器学习、深度学习及三者之间的关系
  3. 程序员夜猫子_如何像夜猫子一样高效
  4. 基于python的人工智能的案例-廖雪峰大牛13个案例带你全面入门人工智能!
  5. php获取当前的地理位置,web端定位:获取当前地理位置
  6. oracle spool命令
  7. 高德地图车机版(修改共存后去除启动弹窗弹窗代码)
  8. 事务4种隔离级别和应用场景
  9. 将CAD图纸转换为PDF文件时怎么修改页面大小
  10. 怎么把录音导入库乐队_如何将音乐导入到库乐队中 库乐队导入音乐的具体教程...