C# 解压错误?
我正在为一个网站写一个爬虫。 它的响应是gzip编码的 虽然解压缩成功,但我无法正确解析特定字段。 我也在使用htmlagilitypack来解析它 字段的解析值只是原始值的一部分 例如: 我只得到/wEWAwKc04vTCQKb86mzBwKln/PuCg== 而firebug显示实际值的时间更长: /wEWBgKj7IuJCgKb86mzBwKln/PuCgLT250qAtC0+8cMAvimiNYD 结尾的“==”是什么意思?C# 解压错误?,c#,html,web,gzip,C#,Html,Web,Gzip,我正在为一个网站写一个爬虫。 它的响应是gzip编码的 虽然解压缩成功,但我无法正确解析特定字段。 我也在使用htmlagilitypack来解析它 字段的解析值只是原始值的一部分 例如: 我只得到/wEWAwKc04vTCQKb86mzBwKln/PuCg== 而firebug显示实际值的时间更长: /wEWBgKj7IuJCgKb86mzBwKln/PuCgLT250qAtC0+8cMAvimiNYD 结尾的“==”是什么意思? 我假设这是解压程序的错误?字符=是由 对下列句子进行编码 人之
我假设这是解压程序的错误?字符
=
是由
对下列句子进行编码
人之所以与众不同,不仅是因为他的理性,而且是因为他有着与其他动物不同的独特激情,这是一种心灵的欲望,是因为他对知识的持续不断和不屈不挠的产生的持久的快乐,超越了任何肉体上的短暂的强烈快乐
你会得到
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNPBMD1BGFYIHBHC3NPB24GZNJVBSBVDGHLCIBBMLTYWXZLCB3AGLJACBPCYBHIGX1C3QGB2YG
DGHLIG1PBMQSIHROYXQGYNKYSBWZXJZZZLCMFUY2UGB2YGZGVSAWDODCBPBIB0AGUGY29UDGLU
dwvkigfuzcbpbmrlzmf0awdhymxligdlbmvyyxrpb24gb2yga25vd2xlzgdllblegnlzwrzihro
ZSBZAG9YDCB2 ZWHLBWVUY2UGB2YGYW55IGNHCM5HBCBWBGVHC3VYZS4=
=
字符只能出现在Base64字符串的末尾。如果你得到它,就意味着你可能得到了所有的字符;反之亦然,因为该字符用作填充字符,并且并非在所有Base64实现中都是必需的。解压没有问题。该页面显然已正确解压缩。否则你的软件可能会抛出一个错误,或者你只会看到一堆奇怪的字符
然而,您得到的是一个ASCII字符串,它显然采用了Base64编码。如果原始二进制数据不是3字节的倍数,则在末尾显示等号。这就是完美的64进制数据
至于为什么你的爬虫程序得到的数据与Firefox的Firebug不同:我不知道,但可以想象出很多原因。这是两个独立的浏览会话,网站可能只是为它们分配不同的会话ID,或者以某种方式记录会话的历史记录
不管怎样,归根结底我不明白你的问题。您究竟无法解析什么?你有什么错误吗?你说的场是什么意思?你说的是HTML表单的字段吗?你能给我们看一下代码吗?你是如何对压缩数据进行膨胀的?是否将返回的结果从字节转换为字符串?如果是,使用哪种编码?等等,==通常用于终止BAS64编码的字符串。这是我试图读取的网页中的隐藏字段。返回的页面以gzip压缩,这是一个直接字段,在回发时再次使用。因此,从语义上讲,它可能只是一个跟踪会话的常量变量。