最新記事

スクリプターによるウェブサイトへの攻撃を阻止する 質問する
scripting
e-commerce
bots
detection

スクリプターによるウェブサイトへの攻撃を阻止する 質問する

回答を受け入れましたが、残念ながら、当初の最悪のシナリオ、つまり、くだらないものを購入しようとするすべての人に CAPTCHA を課すというシナリオから抜け出せないと思います。簡単に説明すると、キャッシュ/Web ファームではヒットを追跡できず、回避策 (キャッシュされていない Web ビーコンの送信、統合テーブルへの書き込みなど) を講じると、ボットよりもサイトの速度が低下します。Cisco などの高価なハードウェアが高レベルで役立つ可能性はありますが、すべての人に CAPTCHA を課すという選択肢がある場合、コストを正当化するのは困難です。後でより詳細な説明を試みるとともに、将来の検索者のために整理します (ただし、これはコミュニティ ウィキなので、他の人が試してもかまいません)。 状況 これは、woot.com でのゴミ袋販売に関するものです。私は Woot Workshop の社長です。Woot Workshop は Woot の子会社で、デザイン、製品の説明、ポッドキャスト、ブログ投稿の作成、フォーラムのモデレーターを務めています。私は CSS/HTML を扱っていますが、他のテクノロジーについてはほとんど知りません。私は開発者と緊密に連携し、ここでのすべての回答 (およびこれまでに出た他の多くのアイデア) について話し合いました。 ユーザビリティは私の仕事の大きな部分を占めており、サイトをエキサイティングで楽しいものにすることが残りのほとんどの部分を占めています。以下の 3 つの目標はそこから生まれています。CAPTCHA はユーザビリティを損ない、ボットは私たちの粗悪な商品の販売から楽しさと興奮を奪います。 ボットは、ランダム クラップ セールを探して、1 秒間に何十回も当社のトップ ページにアクセスし、スクリーン スクレイピング (および/または RSS スキャン) を行っています。ボットがそれを見つけた瞬間、プログラムの第 2 段階が起動し、ログインして [I want One] をクリックし、フォームに記入して、クラップを購入します。 評価 lc: この方法を使用する stackoverflow やその他のサイトでは、試行されるタスクで認証済み (ログイン済み) のユーザーが必要になるため、ほとんどの場合、認証済みの (ログイン済みの) ユーザーを扱います。 Woot では、匿名 (ログインしていない) のユーザーがホームページを閲覧できます。言い換えると、スラムボットは認証されていない可能性があります (基本的に IP アドレス以外では追跡できません)。 そこで、IP スキャンに戻ることになりますが、これは、a) クラウド ネットワーキングとスパムボット ゾンビの時代にはほとんど役に立たず、b) 1 つの IP アドレスからアクセスする企業の数を考えると、無実のユーザーが多すぎることになります (非静的 IP ISP の問題や、これを追跡しようとするとパフォーマンスが低下する可能性があることは言うまでもありません)。 ああ、そして、人々が私たちに電話をかけるのは最悪のシナリオです。彼らからあなたに電話をかけてもらうことはできますか? ブラッドC: Ned Batchelder の手法はなかなかクールに見えますが、サイト ネットワーク用に構築されたボットを破るためにしっかりと設計されています。問題は、ボットが特に当サイトを破るために構築されていることです。これらの手法のいくつかは、スクリプト作成者がボットを進化させてハニーポットを無視し、フォーム ID ではなく近くのラベル名をスクリーン スクレイピングし、JavaScript 対応のブラウザー コントロールを使用するようになるまでは、短期間は機能する可能性があります。   再び: 「もちろん、その宣伝がマーケティング戦略の一部である場合は別ですが。」はい、間違いなくそうです。アイテムが出現したときの驚きや、アイテムを入手できたときの興奮は、実際に手に入れるガラクタと同じくらい、あるいはそれ以上に重要なことでしょう。先着順を排除するものは、ガラクタを「勝ち取る」興奮を損なうものです。   ノヴァトラスト: そして、私は、新しいボット支配者を歓迎します。実際、サードパーティのアプリが製品情報を検索するためにサイトをスキャンできるように RSS フィードを提供していますが、メイン サイトの HTML より前ではありません。私の解釈が正しければ、あなたのソリューションは、目標 1 を完全に犠牲にして、ボットがほとんどのゴミを購入するという事実を諦めることで、目標 2 (パフォーマンスの問題) に役立ちます。あなたの回答に賛成票を投じました。最後の段落の悲観論が私には正確だと感じたからです。ここには特効薬はないようです。 残りの対応は、一般的に IP 追跡に依存していますが、これもまた役に立たない (ボットネット/ゾンビ/クラウド ネットワーキングの場合) だけでなく、有害 (同じ IP の送信先からアクセスする多くの無実のユーザーを捕まえる) であるように思われます。 他のアプローチやアイデアはありますか? 私の開発者は「CAPTCHA にしましょう」と言い続けていますが、私たちのゴミを欲しがっている実際の人間全員にとって、それほど邪魔にならない方法があることを願っています。 元の質問 たとえば、非常に高い価値があると認識されている安価な商品を販売していて、販売数量が非常に限られているとします。この商品がいつ売れるかは誰にもわかりません。そして、100 万人を超える人々が定期的にあなたの販売商品を見に来ます。 結局、スクリプト作成者やボットがプログラム的に [a] その商品をいつ販売するかを把握し、[b] 最初に購入できるようにしようとすることになります。これは 2 つの理由で厄介です。 あなたのサイトは人間以外のユーザーによって圧迫され、すべてのユーザーの処理速度が低下しています。 結局、スクリプターが製品を「勝ち取る」ことになり、常連客は騙されたと感じてしまいます。 一見明白な解決策は、ユーザーが注文する前に通過しなければならないいくつかのハードルを作成することですが、これには少なくとも 3 つの問題があります。 人間にとっては、CAPTCHA を解読したり、猫を選んだり、数学の問題を解いたりする必要があるため、ユーザー エクスペリエンスは最悪です。 認識されるメリットが十分に高く、群衆が十分に大きければ、何らかのグループがあらゆる調整を回避する方法を見つけ、軍拡競争に発展します。(調整が単純なほど、これは特に当てはまります。非表示の「コメント」フォーム、フォーム要素の再配置、それらの誤ったラベル付け、非表示の「gotcha」テキストはすべて、一度は機能しますが、その後、この特定のフォームをターゲットに対抗するために変更する必要があります。) スクリプト作成者があなたの調整を「解決」できないとしても、彼らがあなたのフロントページを攻撃し、スクリプト作成者に手動で注文を記入するよう警告を鳴らすことは防げません。スクリプト作成者は [a] を解決することで有利になるので、注文ページに最初に到達する人間であるため、おそらく [b] で勝つでしょう。さらに、1. は依然として発生し、サーバー エラーが発生し、全員のパフォーマンスが低下します。 もう 1 つの解決策は、IP のアクセス頻度が高すぎないか監視し、ファイアウォールからブロックするか、または IP がアクセスしないようにすることです。これにより、2. を解決し、[b] を防ぐことができますが、IP のスキャンによるパフォーマンスの低下は大きく、スクリプト作成者が独自に引き起こす問題よりも 1. のような問題が多く発生する可能性があります。さらに、クラウド ネットワークやスパムボット ゾンビの可能性により、IP チェックはほとんど役に立ちません。 3 番目のアイデアは、注文フォームをしばらく (たとえば、0.5 秒) 強制的に読み込むというものですが、迅速な注文の進行が遅くなる可能性がありますが、この場合も、実際のユーザーに悪影響を与えない速度であれば、スクリプト作成者が最初に注文を処理できます。 目標 スクリプトを使わない人間にアイテムを販売します。 ボットによって速度が遅くならない速度でサイトを稼働させ続けます。 「通常の」ユーザーに、人間であることを証明するためのタスクを完了するよう要求して煩わせないでください。

Admin

Bash の 'if' ステートメントで 2 つの文字列変数を比較するにはどうすればよいですか? [重複] 質問する
bash
if-statement
scripting

Bash の 'if' ステートメントで 2 つの文字列変数を比較するにはどうすればよいですか? [重複] 質問する

この質問に対する回答は既にここにあります : Bashで文字列を比較する方法 (14件の回答) 5年前に 閉店しました 。 私はif声明を機能させようとしていますバッシュ(使用ウブントゥ): #!/bin/bash s1="hi" s2="hi" if ["$s1" == "$s2"] then echo match fi 、引用符付きと引用符なし、、および をif使用したさまざまな形式のステートメントを試しましたが、それでも次のエラーが発生します。[["$s1" == "$s2"]]===-eq [こんにちは: コマンドが見つかりません さまざまなサイトやチュートリアルを見て、それをコピーしましたが、うまくいきません。何が間違っているのでしょうか? $s1最終的に、が含まれているかどうかを知りたいのです$s2が、どうすればよいでしょうか? スペースの部分だけは解決しました... :/ 「contains」とはどう言うのですか? 私は試した if [[ "$s1" == "*$s2*" ]] しかし、それは機能しませんでした。

Admin

ディレクトリが存在しない場合にのみ mkdir を実行するにはどうすればよいでしょうか? 質問する
shell
scripting
ksh
aix
mkdir

ディレクトリが存在しない場合にのみ mkdir を実行するにはどうすればよいでしょうか? 質問する

AIX 上の KornShell (ksh) で実行するシェル スクリプトを作成しています。 コマンドを使用してmkdirディレクトリを作成したいと思います。 しかし、ディレクトリがすでに存在する場合、何もしたくありません。 そのため、ディレクトリが存在しないことを確認するか、mkdir既存のディレクトリを作成しようとしたときにスローされる「ファイルが存在します」エラーを抑制したいと思います。 これを最も効果的に行うにはどうすればよいでしょうか?

Admin

accels/nemo ファイルの構文をよりよく理解し、カスタム Nemo スクリプトにキーボードショートカットを追加します。
scripting
linux-mint
keyboard-shortcuts
syntax
nemo

accels/nemo ファイルの構文をよりよく理解し、カスタム Nemo スクリプトにキーボードショートカットを追加します。

ここで説明されているように、カスタム Nemo スクリプトにキーボードショートカットを追加する手順に注意してください。Ubuntuの回答を尋ねるこのスタックオーバーフロー回答。 この手法は Nemo キーボードショートカットを修正するのに有効ですが、このガイドラインでは Linux Mint Cinnamon 21.3 ボックスの Nemo スクリプトにキーボードショートカットを追加することはできません。この問題をデバッグするのに役立つように、この機能を実装するサンプル行の構文をよりよく理解したいと思います(この行は、accels/nemo環境変数が指すフォルダ内のファイルに含まれていますGNOME22_USER_DIR)。 (gtk_accel_path "/ScriptsGroup/script_file:\\s\\s\\shome\\sUSERNAME\\s.local\\sshare\\snemo\\sscripts\\sedit.sh" "F4") スラッシュの代わりにバックスラッシュを使用するのはなぜですか? なぜそれを使うべきですか\s? 確認するために\\s\\s\\sそれ以降の内容は正しいですか/script_file:? 編集:この記事を投稿した直後に大きな問題を解決しましたが、まだ上記の質問に対する答えを知りたいです。

Admin

関数内の変数の定義
bash
shell-script
shell
scripting
variable-substitution

関数内の変数の定義

このインターネットのどこかで読んだ後、コマンド出力を変数として使用するときは、次のことを行うのが最善です。 FILE_CORE_NAME="$(/usr/bin/env basename $(/usr/bin/env awk -F "." '{print $1}' <<< "${FILE_TO_PROCESS}"))"; local FILE_CORE_NAME; ただし、この構成では、FILE_CORE_NAMEから派生した値は空です。local FILE_CORE_NAME行から末尾を削除すると、すべてが期待どおりに機能します。 私が誤って読んだのか、それとも間違って読んだのですか?

Admin

無料のコマンド出力からMemとSwapの合計を記録します。
scripting
memory
arithmetic
free

無料のコマンド出力からMemとSwapの合計を記録します。

これに関連する: https://unix.stackexchange.com/a/754252/582781 解決策1: free -g -s2 | sed -u -n 's/^Mem:\s\+[0-9]\+\s\+\([0-9]\+\)\s.\+/\1/p' >> memory.log ここにSwapを追加してMemとSwapの使用合計を記録する方法はありますか?

Admin

jqは一致するパターンを選択しますが、その前に他のパターンがある場合は選択しません。
scripting
regular-expression
jq

jqは一致するパターンを選択しますが、その前に他のパターンがある場合は選択しません。

「vagrant packer」と呼ばれるアプリケーションを実行するたびに、常にリモートの場所からisoファイルとチェックサムファイルをダウンロードするため、isoをローカルの場所にダウンロードするスクリプトを作成していますが、公開された日付が私の日付よりも高い場合にのみ可能です。地域的なもの。その場合は、isoとチェックサムをダウンロードしてから、リリース日をローカルの.confファイルに保存します。 だから、チェックサムのダウンロードURLを取得しようとしました。プロジェクトgithub API URLしかし、 download_url は最初に一致してはいけません。 「不安定」を含み、「.iso.sha512」で終わる必要はありません。 実行sh ... echo downloading checksum.. checksum_download_url=$(curl -s $github_latest_api_url | jq -r '.assets[].browser_download_url|select(match(".(?!unstable).iso.sha512"))') ... ご覧のとおり、まず正しいダウンロードURLを取得してから、次の行でカールダウンロードコマンドを実行しようとしています。 私はこれを試しましたが、関数に一致する正規表現が何であるかわかりません。 それでも結果が出ていない、構文エラーがある、または不安定な行が含まれています。 #!/bin/bash source ./uploads/mai-base.conf prerelease=$(curl -s $github_latest_api_url | jq -r '.prerelease') if [ !prerelease ]; then r_publish_date=$(date -d $(curl -s $github_latest_api_url | jq -r '.published_at') +%s) l_publish_date=$(date -d $publish_date +%s) if [ $r_publish_date -gt $l_publish_date ]; then echo downloading checksum.. checksum_download_url=$(curl -s $github_latest_api_url | jq -r '.assets[].browser_download_url|select(match(".(?!unstable).iso.sha512"))') echo $checksum_download_url #curl -L $download_url echo downloading iso.. # downloading iso code goes here.. # date saving to mai-base.conf goes here.. fi fi # Start packer application.. # PACKER_LOG=1 packer build -var $ISO_VERSION manjaro-arm-installer.pkr.hcl

Admin

引用されたワイルドカードを解釈する方法
shell
scripting
quoting
wildcards

引用されたワイルドカードを解釈する方法

シェルスクリプトの作成中に引用されたワイルドカードを解釈する必要があります。 "R Programming*" *私はアスタリスクを文字通り受け入れたくありません。ワイルドカードとして解釈したいと思います。 "R Programming"* sedコマンドを使用して最初のものを2番目に変換できますか?私はそれが任意の文字列で動作したいと思います。

Admin

SQL Server - SQL スクリプトの実行を停止または中断する 質問する
sql
sql-server
scripting
exit

SQL Server - SQL スクリプトの実行を停止または中断する 質問する

「break」コマンドや「exit」コマンドのように、SQL サーバーで SQL スクリプトの実行を即座に停止する方法はありますか? 挿入を開始する前に検証と検索を実行するスクリプトがあり、検証または検索のいずれかが失敗した場合はスクリプトを停止したいと考えています。

Admin

Bash を使用してコマンドからのすべての出力を抑制するにはどうすればよいですか? 質問する
bash
shell
scripting
echo

Bash を使用してコマンドからのすべての出力を抑制するにはどうすればよいですか? 質問する

パラメータ付きのプログラムを実行する Bash スクリプトがあります。そのプログラムは何らかのステータス (これを実行している、あれを実行している...) を出力します。このプログラムを静かにするオプションはありません。スクリプトが何も表示しないようにするにはどうすればよいでしょうか? Windowsのようなものを探しています「エコーオフ」。

Admin