0

これは、サード パーティによってホストされている HTML / PHP スタック レポート スイートを実行する wget コマンドです。PHP または HTML ページを制御することはできません。

wget --no-check-certificate --http-user=/myacc --http-password=mypass -O /tmp/myoutput.csv "https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action= exportcsv&admin=myappuserid&password=myappuserpass&startdate=2011-01-16&enddate=2011-01-16&reportby=mypreferredview"

すべての要素が完全に機能しています。

--http-user / --http-pass ユーザー名とパスワード プロンプトのブラウザー標準ポップアップによって提供される -O /tmp/myoutput.csv - 対象の出力ファイル

https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action=exportcsv&admin=myappuserid&password=myappuserpass&startdate=2011-01-16&enddate=2011-01-16&reportby=mypreferredview "

パラメータによってオンザフライで生成されたファイル

myrepcode=9999 - 問題のレポートへの参照 action=exportcsv 関数に内部的に記述されている admin=myappuserid サードパーティは SSL を操作してサイトにアクセスします - その後、サイトの機能にアクセスするためにデータベースに保存された内部ユーザー名とパスワード) パスワード=myappuserpass startdate=2011-01-16 このデータと終了データは、レポート固有のパラメータです 9999 enddate=2011-01-16 reportby=mypreferredview これは、さまざまなレベルの詳細または集計を容易にするレポートのオプションです

問題は、reportby パラメータが 5 つの選択肢のリストのラジオ ボタンの選択であることです (確かに、デフォルトは最高レベルの集計であり、最も詳細な最後のものが必要です)。

reportby のオプションの HTML ページ コードのサンプルを次に示します。

HTML のタグはホワイトリストに登録されていないため、リクエストがあればサンプルを送信します

<td>View by</td>
<td>
   <input class="naf-radio" name="reportby" id="reportby[thedefault]" value="thedefault" type="radio">The Default                    
   <input class="naf-radio" name="reportby" id="reportby[myleastpreferred]" value="myleastpreferred" type="radio">My Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mysecondleastpreferred]" value="mysecondleastpreferred" type="radio">My Second Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mythirdleastpreferred]" value="mythirdleastpreferred" type="radio">My Third Least Preferred
   <input class="naf-radio" name="reportby" id="reportby[mypreferred]" value="mypreferred" type="radio">My Preferred
</td>

wget ステートメントでどの reportby 項目を選択しても、常にデフォルトが実行されます。

質問

1) HTML でこの表記 (id=inputname[inputelement]) に遭遇した人はいますか?これは広範な検索に基づいています

2) wget コマンドは、コマンドの実行時にデフォルトのラジオ項目を選択できませんか?

これはおそらく最初に「Use CURL」応答で受信されますが、wget アプローチは、特にこれらのアイテムを 10000 個ダウンロードする必要があるため、私が運用している限られた環境で非常にうまく機能します。

返信前に感謝

4

1 に答える 1

0

ラジオ ボタンは単なる別のフォーム要素であり、通常はクエリ文字列を介して渡すことができます。一部のアプリケーションでは、パラメーターを POST データとして渡す必要がありますが、これは私の経験ではそれほど一般的ではありません。

必要なことは、ラジオ ボタンの名前と、目的のオプションにある値を見つけることです。&name=value次に、現在の URL に追加するだけで、そのラジオ ボタンを選択するように動作するはずです。

この表記id=inputname[inputelement]は、javascript または同様の言語で存在する可能性がありますが、HTML では存在しません。HTML では、url の name=value タイプの宣言 (および属性など) のみです。この場合、この文字列は、画面にレンダリングされるのではなく、HTML を生成するコードで解釈されることを意図していると想定します。

また、URL に入力する値を URL コード化して、不正な文字が含まれていないことを確認する必要があります (たとえば、& や = は完全に混乱します)。

querystring メソッドが機能しない場合、wget には、--post-data投稿するデータを指定できるスイッチがあります。これは、フォームが行うことです。使用する場合--post-data=reportby=mypreferredは、それでさらに成功することを願っています。

それでも失敗する場合は、何らかのツールを使用して wget リクエストとブラウザを介してリクエストを表示し、ヘッダーとデータを比較してそれらの違いを確認します。このようなツールの 1 つは fiddler (http://www.fiddler2.com/fiddler2/) ですが、他にも多くのツールが存在すると確信しています。

于 2011-01-17T11:59:17.640 に答える