WeChatグループに広告を投稿する人が常にいるのでしょうか? Pythonを使って自動ロボットを作成し、彼を排除する

WeChatグループに広告を投稿する人が常にいるのでしょうか? Pythonを使って自動ロボットを作成し、彼を排除する

[[341536]]

WeChatグループ乾癬とは、WeChatグループ内の他のユーザーに恥ずかしげもなく広告を送信するユーザーのことを指します。彼らはWeChatグループの所有者が最も嫌う人々です。 Early Bird をよくご存知の読者の方は、私が技術交流グループを運営していることをご存知だと思いますが、このグループは設立以来、小さな広告に悩まされてきました。彼らは一般人に変装してグループに潜入し、グループに広告攻撃を続け、グループ内の技術交流の雰囲気を著しく乱しました。

あるいは、グループの全メンバーを黙って嫌がらせする。

何が彼らを、WeChatグループ最強の乾癬になるために妥協のない努力をさせるのかは明らかではありませんが(おそらくお金)、あまりにも多くの嫌がらせを経験した後、Pythonを使用してそれらを排除できるのではないかと考え始めました。

ラウンド1

実際、最初のアイデアは非常にシンプルです。それは 2 つのステップに分かれています。まず、これらの人々を正しく特定し、次に Python を使用して追い出します。

しかし、これら 2 つのステップはそれぞれ簡単ではありません。まず、これらのユーザーを正確に識別する最初のステップについて説明します。インターネット上にはデータがなく、適切な識別基準もありません。特徴認識を完了するには、自分の脳を使うしかありません。広告を投稿した約 100 人のユーザー サンプルを使用して数か月間トレーニングした後、私の「人工知能」は基本的に、異常なユーザーが以下の基準の少なくとも 3 つを満たしていると判断できます。

  • WeChat IDが設定されていません
  • プロフィール写真は人気者の女の子
  • WeChatの名前は特別な記号または絵文字です
  • Momentsに投稿されたことはありません
  • Momentsの背景画像がありません
  • 合格後はグループ参加申請以外の返答はありません

そして、過去のデータによると、1番目と3番目の項目を満たすユーザーは小さな広告のファンである可能性が高いため、次に行うことは、Pythonを使用してWeChatでこれらの人々を見つけるためのコードを記述することです。このルールをまとめた後、私は数年前にPythonを使用してWeChatの友達を研究したことがあり、wxpyまたはitchatの操作は複雑ではないはずなので、この要件を達成することは難しくないだろうと楽観的でしたが、事実は私がまだ若すぎることを証明しました。

いつからかは分かりませんが、これらのライブラリはまだインストールして使用できますが、WeChatは基本的にほとんどの人のWebバージョンのWeChatログイン権限を禁止しています。そのため、複数のWeChatアカウントを使用してQRコードをスキャンしてWeChatにログインすると、例外なくプロンプトが表示されます。

  1. <エラー> < ret > 1203 </ ret > <メッセージ>    
  2. アカウントのセキュリティのため、この WeChat ID では WeChat ウェブページにログインできなくなりました。  
  3. Windows WeChat または Mac WeChat を使用してコンピューターにログインできます。  
  4. </メッセージ> </エラー>  

これは頭​​の痛い問題です。何千人ものWeChatの友達を1人ずつ手動で確認することはできないので、他の解決策があるかどうか考え始めました。

第2ラウンド

Python クローラーを頻繁に作成する場合、場合によっては、Requests を使用して面倒なクロール防止対策を行うよりも、Selenium の方が操作が便利であることがわかっているでしょう。そこで、WeChat APIを使用するというアイデアが失敗したことがわかった後、私は比較的愚かな方法に注目しました————pynput

pynput は、Python を使用してコンピューターのマウスとキーボードを制御および監視するサードパーティ ライブラリです。この時点で、私が何をしたいのかがわかったと思います。API を使用してデータを直接取得することはできないため、Selenium と同様に、友達を 1 人ずつクリックする操作をシミュレートして、必要な操作を実現します。

このライブラリについて簡単に説明します。依存ライブラリがあまり多くないので、インストールはとても簡単です。pip install pynput を実行するだけです。使い方もとても簡単です。マウス操作は座標のみに依存します。デモを見てみましょう👇

上記の GIF デモと同様に、最初に pynput をインポートしてマウス コントローラーをインスタンス化し、ステータス バーの WeChat の位置を mouse.position に送信してマウスがその位置に移動するようにし、次に mouse.press を使用してマウス クリックをシミュレートして WeChat を自動的に開きます。そこで質問なのですが、目的の場所の座標をどうやって取得すればいいのでしょうか?少しずつ試すだけではだめです!

コントローラーを使用してマウスを制御するだけでなく、pynput はマウスを監視することもできます。たとえば、次のコードを使用すると、プログラムの起動後にマウスをクリックするたびにその位置を記録できます。

  1. pynputからマウスをインポート 
  2. on_move(x, y)を定義します。  
  3. print('マウスは{0}に移動します'.format(  
  4. (x,y)))
  5. def on_click(x, y, ボタン, 押された):  
  6. print('{0}、座標 {1}'.format('マウスクリック'、押されている場合は 'マウスを離す'、(x, y)))  
  7. 押されていない場合:  
  8. Falseを返す
  9. 真の場合:  
  10. リスナーとしてmouse.Listener( on_move on_move = on_move, on_click on_click = on_click) を使用します。  
  11. リスナー.join()

次のタスクは簡単です。WeChat ウィンドウを固定したまま、各キー位置 (WeChat アイコンの位置、グループ チャット ウィンドウの位置、個々のグループ メンバーのアバターの位置) の座標を記録するだけです。たとえば、上記の最初のルールを判断する場合、つまり各グループ メンバーの WeChat アカウントが設定されているかどうかを取得する場合は、次の操作をシミュレートしてそれを達成できます。

  • WeChatアプリをクリック
  • 希望のグループチャットをクリックします
  • 各グループメンバーのアバターを順番にクリックします。
  • WeChat IDの場所へ移動
  • WeChat IDをダブルクリックします
  • WeChat IDをコピーして、それが最初のWeChat IDであるかどうかを判断します。

上記のプロセスでは、最後のステップで、pynput のキーボード コントローラーを使用してコピーできることに言及する価値があります。対応する WeChat アカウントをダブルクリックして選択した後、次のコードを使用してキーボード入力 Command + C をシミュレートし、コピー操作を完了できます。

  1. pynput.keyboardからKeyをインポート 
  2. pynput.keyboardからControllerをController1としてインポートします。  
  3. キーボード=コントローラ1 ()  
  4. keyboard.pressed(Key.cmd) を使用すると:  
  5. キーボードで「c」を押します 
  6. キーボードを離す('c')

ただし、貼り付けには、別のエディターに貼り付けるためのコマンド+Cをシミュレートするためにpynputを使用する必要はありません。サードパーティのライブラリpyperclipを使用して、次の2行のコードでコピーしたテキストを直接文字列に変換できます。

  1. pyperclipをインポートする 
  2. pyperclip.paste()

グループメンバーのWeChat IDを文字列に変換した後、文字列の長さを判断したり、正規表現やその他の方法を使用したりすることで、メンバーのWeChat IDが最初のWeChat IDであるかどうかを簡単に判断し、ルール1の判断を実装できます。次のコードと動的な図は、最初のグループメンバーのWeChat IDを取得する完全なプロセスです。

  1. pynput.mouse からボタン、コントローラーをインポートします 
  2. インポート時間 
  3. pynput.keyboardからKeyをインポート 
  4. pynput.keyboardからControllerをController1としてインポートします。  
  5. pyperclipをインポートする 
  6. マウス=コントローラー()  
  7. # WeChatをクリック 
  8. マウスの位置= (1046.14453125, 4.546875)  
  9. 時間.スリープ(2)  
  10. マウスを押す(ボタンを左に押す)  
  11. マウスを離す(ボタンを左に離す)  
  12. #アバターをクリック 
  13. マウスの位置= (1194.140625, 441.05859375)  
  14. 時間.睡眠(1)  
  15. マウスを押す(ボタンを左に押す)  
  16. マウスを離す(ボタンを左に離す)  
  17. # クリックしてテキストを選択
  18. マウスの位置= (965.60546875, 284.0390625)  
  19. 時間.睡眠(1)  
  20. マウスクリック(ボタン左、2)  
  21. キーボード=コントローラ1 ()  
  22. keyboard.pressed(Key.cmd) を使用すると:  
  23. キーボードで「c」を押します 
  24. キーボードを離す('c')  
  25. 時間.睡眠(1)
  26. wechatid = pyperclip .paste()  
  27. print(f"WeChat ID {wechatid} は広告アカウントの疑いがあります" if len(wechatid) > 20 else f"WeChat ID {wechatid} は広告アカウントではありません")

Zao XiaoqiのWeChatアカウントが広告アカウントから正常に除外されたことがわかります。

次に、グループメンバー間の座標距離を記録し、ループしてスクロールまたはプルダウンをシミュレートして上記のプロセスを実行します。その後、ルール 1 に従ってグループメンバー全員の WeChat アカウントを判断し、異常なメンバーを見つけて個別に判断できます。

最終的に、広告アカウントであると疑われるWeChatアカウントが6件見つかりました。その後、他のルールに基づいた手動判断により、最終的に2人のユーザーが高リスクの広告ユーザーとして特定され、削除されました。

最後に

上記の操作により、2 つの疑わしい広告アカウントの排除に成功しましたが、全体としては失敗でした。本当に正しい人をキックしたかどうかを判断するのはまだ難しいからです。間違った人をキックした場合、ファンの数は-1になります。同時に、Pythonを使用してグループ内の乾癬を正確に見つけることは依然として非常に難しいことがわかります。pynputを使用すると、せいぜいWeChat名、WeChatアカウント、アバター(画像認識APIを使用)の判断を完了できますが、友達の輪に隠されたより多くの情報を抽出してマイニングすることは困難です。

同時に、pynput には Selenium と同じ欠点があります。つまり、実際の人の操作をシミュレートするため速度が遅く、位置決め方法が座標のみをサポートしているため、操作中に WeChat ウィンドウを移動できないようにする必要があります。そうしないと、以前に記録されたすべての要素が無効になります。開発者は、より多くの位置決め方法をアップグレードすることをお勧めします。

<<:  WeChat AIがHPおよびIntelと提携し、PC向け人工知能音声アシスタントを開発

>>:  Python 機械学習チュートリアル

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

Dynatrace のフルスタック AI モニタリングは、企業が AWS クラウドで飛躍するのを助けます

2018 年 10 月 31 日、上海 - 世界有数のソフトウェア インテリジェンス企業である Dy...

ニューラルシンボリックシステム、学際的相互作用、李飛飛と他の16人の学者がAIの未来について議論する

昨年、ニューヨーク大学の心理学および神経科学の教授であるゲイリー・マーカス氏と、ディープラーニングの...

素晴らしい配達でした!インテルビジョン観測室は、実体経済の発展に向けた新たな道を切り開きます|インテルビジョン

5月23日、 「実体経済の新たなエンジンを動かす『中核』のダイナミックエネルギー」をテーマにしたイ...

機械学習チートシートを使用して難しい問題を解決します。できますか?

機械学習の初心者であっても、中級プログラマーであっても、この質問に戸惑うかもしれません。チートシート...

Googleの新しい論文によると、「AIは人間を超えようとしている」というのはまだ現実的ではなく、AIにも限界がある

11月8日、Googleの研究者3人がプレプリントライブラリ(ArXiv)に最近提出した論文の中で、...

人工知能の歴史 - チューリングテストからビッグデータまで

[[194770]]私はずっと、人工知能がどのように提案されたのか、その背後にはどのような物語がある...

ペンシルバニア大学の最新研究:AI はアイデア生成において人間よりも 7 倍効率的であり、GPT の創造力は人間の 99% を上回ります。

囲碁からゲームのプレイ、さまざまな反復作業の完了まで、AI の能力は多くの面で人間をはるかに上回って...

漫画は爆発的な効果でAIに変身し、サーバーが何度も圧倒された

[[436077]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

李偉博士がブロックチェーンについてわかりやすく語る:技術原理、実用的応用、AIとの統合

[51CTO.comからの原文] 人工知能、モノのインターネット、ブロックチェーンなどの最先端技術が...

人工知能とは何かについて10分ほどお話ししましょう。

1999年、ハリウッドSF映画史上最も重要なSF映画『マトリックス』が公開されました。この映画は、...

適切な場所で機械学習は革命をもたらすだろう

[[194517]]機械学習に代表される人工知能の分野は、現在、科学技術分野で最もホットな分野の一つ...

休日のAI本リスト:人工知能をしっかり学びたいなら、まずはこの6冊から始めましょう〜

諺にあるように、何千冊もの本を読むことは何千マイルも旅をすることと同じです。休暇中に本を読まないわけ...

...

GPT-4はますます愚かになり、過去の返信をキャッシュしていることが明らかになりました。ジョークが800回言われても、新しい返信は聞きません。

一部のネットユーザーは、GPT-4 が「愚か」になったことを示す別の証拠を発見しました。彼はこう質問...