Vkontakteメッセージに関するSMS

画像

はじめに



むかしむかし、クラスメートと私はお金を稼ぐ方法を考えていました。 それから、プロモーションSMSを送信する以外に何も思いつきませんでした。 知識もスキルもなかったので、うまくいきませんでした。 しかし、写真を認識し、SMSを無料で送信したいという願望は残っていました(ただし、この地域ではインターネットはどれほど高価でしたが)。



オペレーターのキャプチャ



PHPをインストールしたので、何らかの問題でPHPの研究を開始することにしました。 そのとき、私は学年を思い出しました。 現在、私の地域で最も安いTele2モバイルオペレーターがいます。 それは彼と一緒に働くことを意味します。 無料送信サイトに行きました。 SMSがどのように機能するかを見ました。 とてもシンプルな写真。



画像



しかし、顕微鏡でそれらを見る価値がありました...私は、最も簡単で、最もアクセスしやすい方法ですべてをしたとすぐに言わなければなりません。



はい、写真。 よく調べてみると、背景色の値が0x7FFFFF未満になることはめったにありません。 素晴らしいので、ノイズを取り除き、何が起こるかを見ることができます。 どうやって? チュートリアルで最初に出会ったのは、GDlibライブラリーです。 このライブラリを使用すると、ピクセルの色を非常に簡単に決定または設定できます。 各背景ピクセルの色を黒に置き換えました。



画像



だから、悪くない。 ここでのみ、明らかに数種の干渉が残っています。 実際、ほとんどの場合、キャプチャではさまざまな色の数字が使用されます。 さらに、数字は常に6です。 つまり、最も人気のある6色を見つけて、残りの色を黒で塗りつぶすだけで十分です。



画像



すべての数字が別々であることが判明しました。 結局のところ、これはプラスにすぎません。

次に、全体像を6つのコンポーネントに分割します。 各部分には、数字、まあ、少し黒い背景が含まれます。 これを行うには、yで上下の座標を見つけ、xで左右の座標を見つけます。



画像



しかし、数字は角度があり、サイズが異なります。 良いことには、それらを回転させて同じサイズにする必要があります。 そしてそれは可能かつ簡単です。 私の意見では、各桁には独自の幅と高さがあり、垂直軸に対する回転角度と同じくらいユニークなパラメーターです。 何も回転させずに、この1つのパラメーターに限定します。



1つの写真から6つの数字を取得できましたが、それらを認識する必要があります。 そしてそれを認識するためには、何かと比較する必要があります。 比較するものはありませんでしたが。 少なくとも小さな基準が必要でした。 12個の画像をダウンロードするスクリプトを作成することが決定されました。これらの画像は、人(私またはお母さん)によってさらに認識されます。 認識後、特定の方法で保存された標準が取得されました。



画像



名前が0、1、2、3、4、5、6、7、8、9の10個のフォルダーがあります。それぞれの中に、認識された数字の幾何学的な寸法に対応するディレクトリがあります。 これは、参照数字の画像が保存される場所です。



これで、安全に認識できます。 新しいキャプチャごとにノイズが除去され、6桁に分割されました。 幾何学的なサイズに対応するディレクトリを通過する各図は、標準と比較されました。 比較は愚かです-一致したピクセルの数。



その結果、かなり長いが動作するスクリプトであることが判明しました。 90%の確率での認識は、平均5秒続きます。 標準のベースを削減したため、認識時間は短縮されますが、確率も削減されます。



私のソーシャルネットワークのアプリ



SMSを送信できたすべて。 私はどこかでこの機会を台無しにしたかった。 どこへ?

この選択は、私が連絡先を使用するソーシャルネットワークで決まりました。 アイデアはシンプルでした。 新しいメッセージについてSMSを送信します。 もちろん、すべてはVK_apiで実行できますが、アプリケーションから1つのSMSを送信するために0.1票(約1ルーブル)が請求されます。 そして、悪魔はこれらの声をそこに投げる方法を知っています。

だから私は必要です:





それでも、最初のステップはスタンドアロンアプリケーションを作成することです。 なぜなら そのようなアプリケーションのみがプライベートメッセージにアクセスできます。 長い間、私はそれを作成する場所を探していました。 渡す必要があるリンクはそのようなアプリケーションを作成するためにすぐに明らかではありません。



ユーザーメッセージを処理できるようにするには、まずaccesss_tokenを取得する必要があります。 このプロセスは、開発者向けページで説明されています 。 アプリケーションはいつでもメッセージにアクセスできます(スコープ=メッセージ、オフライン)。 一般に、およそ次の行が得られます。



http://api.vkontakte.ru/oauth/authorize?client_id=__&scope=messages,offline&redirect_uri=http://api.vkontakte.ru/blank.html &display=page&response_type=token
      
      





ブラウザに入力します。 アプリケーションへのアクセスを許可します。 そして、いくつかのファイルでaccesss_tokenを自分自身に安全にコピーします。



画像



さらにシンプル。

未読メッセージをすべて受信します。



 https://api.vkontakte.ru/method/messages.get?out=0&offset=0&count=1000&filters=1&preview_lengt=0&time_offset=0 &access_token=__
      
      





json_decode応答を処理すると、送信者ID、メッセージID、メッセージコンテンツ、および役に立たない一連の情報を含むオブジェクトを取得します。 送信者の識別子により、彼の名前と姓を決定します。



 https://api.vkontakte.ru/method/getProfiles?uid=_&fields=first_name,last_name &access_token=__
      
      





事前に、ソースに保存されないように、ファイルに電話番号を書き留めます。 すべてがSMSを送信する準備ができています。 送信します(ソースコードでsend_sms_VK関数)。 送信されたSMSメッセージに既読のマークを付けることは残ります。



 https://api.vkontakte.ru/method/messages.markAsRead?mids=_ &access_token=__
      
      





5秒ごとに誰かが私たちにメッセージを書いたかどうかを確認するループにそれをすべて入れてください。



結論



私のコードはすべてここに投稿されています 。 望まれるものが多く残っており、改良が必要です。 小さなチェックはありませんが、それでも彼は労働者です。 思い出させてください:

  $dir_were_expamples="C:\\www\\TEST_DIR2";//      $file_were_access_token="access_token.txt";//    access_token $file_were_tel_nomber="tel.txt";//         
      
      





アーカイブされたサンプルフォルダはここにあります

access_token.txtおよびtel.txtファイルは、事前に作成して入力する必要があります。

番号の形式はxxxxxxxxxxxx (10桁)でなければなりません。 例0001234567。



みなさん素敵な夏をお過ごしください。



All Articles