0

AngleSharp を使用して URL を「開き」、 のvalue属性を変更し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 値を取得するために) 再確認しました。

最後に、char はブラウザのソース ビューではギリシャ語であり、Wireshark によると、説明付きAのシンボルでしC1た( http://www.ascii-code.com/を参照) 。ÁLatin capital letter A with acute

私はこの Web インターフェイスを作成した人を知っていますが、彼はギリシャ語Aを間違って使用していて、それを変更することはできないと私に言いました (理由は後で説明します)。

nameサーバーが何を期待しているのかがわかったので、属性も設定してフォームを送信できると思いました。しかし、Wiresharkでチェックインすると、文字がフォームを送信するときにブラウザが送信する文字と同じではないため、認識されません。(運が悪いので正しい名前を設定するのに苦労しました)。

また、何らかのエンコードの問題である可能性も考えましたが、構成でエンコードを設定できませんでしたcontext。HTML を取得する前にカルチャを「el-GR」に設定しましたが、何も変わりませんでした。

私に何ができる?何か提案はありますか?

PS。これは、マイクロコントローラーによってホストされるセキュリティの低い Web インターフェイスです。デバイスは既に認証を取得しているため、HTML を変更できません。また、ブラウザで使用すると、インターフェイスは完全に機能します。

4

1 に答える 1

1

インターフェイスを持つクラスを作成し、ImplementsこのIEncodingProvider クラスのインスタンスをConfigurationwith メソッドを介してコンストラクターに提供する必要がありました。

クラスは次のとおりです。

Private Class FixedEncodingProvider
    Implements IEncodingProvider

    Public Function Suggest(locale As String) As Encoding Implements IEncodingProvider.Suggest
        Return Encoding.GetEncoding(1253)
    End Function
End Class

そして、次のように使用します。

Dim Config = Configuration.Default.WithDefaultLoader.With(New FixedEncodingProvider())
Dim context = BrowsingContext.[New](Config)

ライブラリの作成者である FlorianRappl の指導に感謝します。

于 2017-04-27T09:14:51.767 に答える