我正在使用 AngleSharp 来“打开”一个 URL,更改value
an 的属性,input
然后提交form
.
但是当我从 URL 获取 HTML 代码时,我在我感兴趣的name
属性中得到了一个无法识别的字符。input
看:
<!DOCTYPE html>
<html>
<head></head>
<body>
<hr>
<center>USER MENU<hr></center>
<form method="post" name="input" enctype="text/plain">
<fieldset>
<legend>ENTER USER CODE</legend>
ENTER USER CODE: <input type="password" name="�00" maxlength="4">
<br>
<button type="submit" formenctype="text/plain">SEND</button>
</fieldset>
</form>
</body>
</html>
正如您所看到的,这是表单中唯一的,因此我可以通过它的其他属性作为选择器input
“捕捉”它(以更改)。value
像这样:[type=password]
context.Active.QuerySelector(Of IHtmlInputElement)("[type=password]").SetAttribute("value", "1111")
所以,问题是当我提交表单时,它发送的帖子数据名称错误,它们无法被识别。我通过在浏览器中打开此 URL 了解了无法识别的字符是什么,并使用 Wireshark 仔细检查它(以获取字符的 HEX 值)。
最后,charA
在浏览器源代码视图中是希腊语,正如 Wireshark 所说,C1
它是Á
带有描述的符号:(Latin capital letter A with acute
请参阅http://www.ascii-code.com/)
我认识创建这个网络界面的人,他告诉我他使用了一个希腊语A
是错误的,他无法更改它(我将解释原因)。
所以,既然我知道服务器期望什么,我想我也可以设置name
属性然后发送表单。但是,当我这样做时,由于我在 Wireshark 中签入时,它并没有得到认可,因此该字符与您提交表单时浏览器发送的字符不同。(我努力设置正确的名称,但没有运气)。
我还认为这可能是某种编码问题,但我没有设法在context
配置中设置编码。在获得 HTML 之前,我将文化设置为“el-GR”,但没有任何改变。
我能做些什么?你有什么建议吗?
PS。这是一个由微控制器托管的低安全性 Web 界面。无法更改 HTML,因为设备已获得认证。此外,该界面在浏览器中使用时可以完美运行。