c# combobox 加载字体_C#爬虫与反爬虫--字体加密篇

爬虫和反爬虫是一条很长的路,遇到过js加密,flash加密、重点信息生成图片、css图片定位、请求头.....等手段;今天我们来聊一聊字体;

那是一个偶然我遇到了这个网站,把价格信息全加密了;浏览器展示:

5115d14b18b6d0692542b07852cfc3d6.png

查看源码后是这样:

01d31bfb280b2c898bdde665d9b510c1.png

当时突然恍然大悟,以为不就是把价格换成 xxxx: .. 字符实体了嘛 我转下就行了;(注:大家可能对转义字符(实体名称)比较熟悉 比如双引号对应" ,字符实体呢就 开头 ; 结尾 中间那些是ASCII码 ;我这个示例中又有点不一样的是 以x开头 表明是16进制的 ASCII码;详解:http://www.w3school.com.cn/html/html_entities.asp 和

http://www.w3school.com.cn/tags/html_ref_ascii.asp) ;于是开始了转码。。。。

42dc1a89f2cdb02aa3c3d5abe6a8ff37.png

这是什么鬼,难道我的判断有误。当我打开浏览器调试界面发现

c93c60ebf839fce41ff309b17e3970f2.png

也是乱码,我在界面上copy金额黏贴到记事本看看

0ea834e6323edb252f0b9d92d57dcb3f.png

也是乱码说明上面的推断是没有错的,他应该就是在显示上做了什么处理;

在找找发现一段鬼鬼祟祟的代码;给price设置了一个叫zhongshugui的字体,但是好好的字体为啥要用base64 不用 http加载,http加载貌似可以用浏览器缓存的不是更好,base64 的话我每次浏览一个网页不都是要重新加载一下;莫非他不想缓存就是每次加载都不一样,经各种刷新后发现确实每次都生成不同文件;

dac6416ebd6debaa314ff2b207cfe8c0.png
6c30c716f46fdcfc68d89e0f9795cb30.png

既然感觉字体有问题 那我们就解析出来看看是啥,

4c5b491a58f7e047d8b580d9e5c6e3ce.png

这些0~9正好和界面上的html字符实体编码一一对应;所以这个加密方式就是 html写对应的HTML实体并与字体里的ASCII对应,自定义字体文件 以base64的方式内嵌到html里 ;每个页面随机生成不同的字体(就是字体里的ASCII);上面那个是为了写帖子自己仿造原网站做的例子;

C#解析字体的类在System.Windows.Media命名空间下Fonts类:

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.media.fonts?view=netframework-4.8

作者:~小菜鸟

出处:https://www.cnblogs.com/qqljcn/p/11089286.html,

要在 C# 中使用 ComboBox 控件加载数据库中的选项并显示已选中的数据,您可以执行以下步骤: 1. 首先,您需要使用 ADO.NET 连接到您的数据库。您可以使用 SqlClient 类库中的 SqlConnection、SqlCommand 和 SqlDataReader 类来完成此操作。例如,以下代码演示了如何连接到 SQL Server 数据库并从表中检索数据: ```csharp string connectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" SqlConnection connection = new SqlConnection(connectionString); string query = "SELECT * FROM myTable"; SqlCommand command = new SqlCommand(query, connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { comboBox1.Items.Add(reader["columnName"].ToString()); } connection.Close(); ``` 在这个示例中,您需要将 connectionString 更改为您的数据库连接字符串,将 myTable 更改为您要从中加载数据的表的名称,并将 columnName 更改为您要显示在 ComboBox 中的列的名称。 2. 接下来,您需要在加载 ComboBox 中的数据时设置选中的数据。您可以使用 ComboBox 的 SelectedItem 属性来设置选中的数据。例如,以下代码演示了如何在 ComboBox 中设置选中的数据: ```csharp string selectedData = "已选中的数据"; if (comboBox1.Items.Contains(selectedData)) { comboBox1.SelectedItem = selectedData; } ``` 在这个示例中,您需要将 selectedData 更改为您要选中的数据的值。如果 ComboBox 中包含该值,则将其设置为选中项。 3. 最后,您需要在 ComboBox 的 SelectedIndexChanged 事件中将选中的数据加载到其他控件中。您可以使用与我在先前答案中提供的相同的代码来完成此操作。例如,以下代码演示了如何在 SelectedIndexChanged 事件中将选中的数据加载到 ListBox 中: ```csharp private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string selectedData = comboBox1.SelectedItem.ToString(); // 获取选中的数据 listBox1.Items.Add(selectedData); // 将选中的数据加载到 ListBox 中 } ``` 在这个示例中,您需要将 listBox1 更改为您要将选中的数据加载到的 ListBox 控件的名称。 请注意,以上示例仅供参考,您需要根据您的具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值