仲介なしの21世紀の住宅検索

私たちはかつて住む場所を探していたと思います。 誰かが宿泊施設にいますが、ほとんどはおそらく賃貸用です。 少なくとも一度掲示板で本当のオファーを見つけようとした人は誰でも知っています-これは非現実的です。 おそらく、他のエリアにはそのような量のスパムはありません。 あなたがこの地獄に突入した後、通常、あなたの手は他人の利益のために彼らのITシュノストを適用するためにかゆみを始めます。 私にとっての結果は、ソブニクプロジェクトでした。



Sobnikは、メッセージボードで仲介者をマークするChromeプラグインです。 Avito.ruでのみ機能しますが、近い将来、 Irr.ruおよびその他の大きなボードを追加します。 スーツケースに座っている人や試してみたい人は、 Google Web Storeにアクセスしてください。 カットの下で、私はプロジェクトの技術面、その展望、そして仲介者による敵の観察について話します。 他の誰かのJSコードを批判するファンも大歓迎です。プラグインのクライアント部分のソースはgithubで入手できます。





正確さのファンのために、明確に説明します。正式には、Sobnikはプラグインではなく「拡張機能」ですが、最後の用語に慣れるにはあまりにも苦痛です。



なんでこんなこと?



「社会への利益」が明白であることを願っていますので、すぐに「なぜ個人的にそれが必要なのか」という質問に目を向けます。 住宅の検索に最後に直面し、インターネットをいっぱいにしたスパムを吐き出し、十分に独創的な不動産業者を見て、私はちょうど同じ良心の刺し傷を感じました。 結局、21世紀の広がりをどのように船が耕すことができるのでしょうか。私たちプログラマーは本当に悲惨なスパマーに対処できないのでしょうか。



熟考した上で、私は自分ができることを提案しようと思いました。 仲介者を簡単に特定できることを理解するには、数百の広告を表示するだけで十分です。 あまりにも疑わしいまたは明らかにエージェントベースであるアナウンスの内容によって、または同じ電話番号を持つ多くのオファーの存在によって。 このアイデアを検証できる技術に基づいて、広告を解析し、どこかに保存し、分析する必要がありました。 パーサーとしてGoogle Chromeを選択しました-メッセージボード上のすべての必要な情報にアクセスするには、機能するJavaScriptを備えた本格的なブラウザーエンジンが必要です。 サーバーの場合、GoとMongoDBを試すことにしました。 3つすべてが私にとって新しいものだったので、視野を広げて新しいことを学ぶ絶好の機会でした。 結果はソブニクです。



エージェントを識別する方法は?



一見-非常に簡単です。 アクセス可能で信頼できる指標は、多くの広告が表示される電話番号です。 結局のところ、エージェントは広告ごとに新しいSIMカードを購入することはありません! さらに、一部の広告には、著者が不動産業者であり、コミッションを望んでいるものへの直接の参照が含まれています。 理論的には、もちろん簡単です;実際には、多くの小さな問題に対処する必要がありました。

  1. Avitoおよび他の多くのボードは、それぞれ電話番号を画像の形式で公開しています。番号は認識される必要があります。
  2. エージェントは実際の電話を積極的に隠します。 電話番号は、アナウンスのテキストに単語、文字、特殊文字で示されています。 このすべてのカモフラージュは識別され、開かれなければなりません。
  3. 一部の所有者は、同じアパートに多くの広告を出します。 それらを不動産業者に登録しないためには、異なる告知の異なるオブジェクト、または同じことについて知る必要があります。 住所認識には関与していませんでした。多くのボードで利用可能な既成の地理座標を使用しています。
  4. 最も高度な仲介業者は、アパートの写真に実際の電話番号を描画します。 これらの同志は、識別するのが最も難しいです。 写真上の数字を認識できる、信頼性が高く使いやすいOCRソリューションが見つかりませんでした。 写真にテキストがあるかどうかを判断する簡単なアルゴリズムを作成し、そのような広告を代理店のものと見なす必要がありました。
  5. 広告テキストには、著者が代理人であることが直接記載されていることがよくあります。 しかし、コンピューターはまだ音声を理解することを学んでいないため、この情報を最大限に活用するための信頼できる方法を思いつきませんでした。 最も一般的で明確なフレーズを検出するにはコストがかかりますが、この基準の利点はメインの検出器を電話番号で補完するだけです。


これらの手法を使用すると、ほとんどの仲介者を自動的に識別することができます。 これは、スパマーの活動中にAvitoがどのように見えるかです(赤と緑の円は、Sobnikの作業の結果です)。

画像



プロジェクトの技術面



プラグインはJavaScriptで記述されています。ChromeAPIの機能は意図した目的には十分であるためです。 唯一の問題は、電話番号の画像を取得することでした。 実際には、Avitoは正しいリファラーを持つリクエストに対してのみそれを提供します。 ブラウザでこのヘッダーを偽造する方法はありません。また、 クロスオリジンポリシーでは、Avitoページによってアップロードされた画像データを取得できません。 この保護は簡単に回避できることが判明しました。対応するAPIを使用してMHTML形式でページを保存し、結果の文字列からbase64エンコード画像を含む必要な部分を切り取りました 。 同様に、アパートの写真にアクセスできます。



さらに、情報はGoでプログラムが実行されるサーバーに送信されます。 実際、2つのプログラムがあります。すべての要求は非同期に実行され、1つのプログラムはすべての要求をキューに書き込み、2番目のプログラムはこれらの要求を処理します。 クライアント部分には、要求を時間どおりに完了する時間がなければ、サーバーへの呼び出しの流れを遅くする組み込みロジックがあります。 このアプローチにより、負荷の急増がスムーズになります(今日それらが発生することを本当に期待しています)。 データはMongoDBに保存されます。



私はこのすべての経済をAmazon AWSに置きました(もう1つ試してみたかったことです)。 「無料利用枠」で十分なので、ホスティングの費用はかかりません。



サーバーAPIは公開されており、承認はありません。 汚いゲームを楽しみたいと思う人がいるのではないかと思うので、近い将来、何らかの保護を導入します。 最終的に、私はほぼ確実にプラグインユーザーの登録に行きますが、試してみたい人のために余分な障壁を追加したくありません。



プラグインのソースコードは公開されています。 まず、それを隠すことはできません。 第二に、プラグインが収集する情報の種類をすぐに確認できるため、人々を理解してもプライバシーに関する質問はありません。 さて、最後に、ある日突然、開発に参加したい愛好家がいます。



データ収集用の集中型クローラーはありません。 最初に、AvitoはIPシュニックを遮断します。IPシュニックは1時間に数百ページほど開きます。 第二に、多くのユーザーがいる場合、分散クローラーが得られることを願っています-誰もがいくつかの広告を開き、データベースがいっぱいです。 ただし、アクティブなユーザーはいませんが、データベースは空です。 プラグインの主な利点は、エージェント広告を開く必要がないことです。データベースが空の場合、すべてを連続して開く必要があります。 一般的に、システムに少なくともある程度の加速を与えるために、私は内部使用のために別のプラグインを作成しました。これは静かに、毎分約1ページ、Avitoでモスクワのアパートを借りるオファーをスキャンします。 ピーク時にスパマーに追いつくことはできませんが、それでも親愛なる読者には、Sobnikの仕組みを評価する機会があります。それをインストールし、Avitoで上記のセクションを開いて楽しんでください。 より深刻な規模でAvitoスキャンを調整する方法についての提案を歓迎します。 突然プロジェクトを支援したり、別の都市やセクションをスキャンしたい場合は、クロール用のプラグインを提供できます。



全米リアルター協会加入者の観察



モスクワでレンタルスキャンを実行することで、いくつかの有用な観察を行いました。 それらはすべて非常に論理的で明白なように見えますが、Sobnikは視覚的にチェックおよび確認することを許可しました。

  1. 営業日には、広告の約80%はエージェントが所有しています。 ところで、Avitoは多くの広告を積極的に禁止しているので、1時間に1分間に30個の広告のうち、残り10個しか残っていません。
  2. 夕方(10〜11時間後)および週末には、エージェントはほとんどいません。 大量のスパムが発生する日常生活から目を休ませてください。
  3. 有料広告(Avitoでは黄色で強調表示されます)は、ほとんど常に所有者です。 これまでのところ、エリートのアパートを宣伝するために100ルーブルを後悔していないエージェントは1人しかいません。 これが所有者であり、彼が排他的な代理人であるふりをして、余分なお金を減らすことを決めた可能性があります(噂によると、そのようなものがあります)
  4. 広告に1つまたは2つの写真しか含まれていない場合、ほぼ間違いなくエージェントです。 3枚の写真-50〜50。所有者は写真なしで書くか、緊張している場合は少なくとも5枚作成します。
  5. 電話が写真で示されているか、広告のテキストで「暗号化」されている場合、これはほぼ確実にエージェントです。 これらはAvitoによってこのように暗号化されますが、同じ電話番号に多数の広告を配置するにはお金が必要です。


一般に、このリストを使用すると、ほとんどすべてのゴミを目でフィルタリングできるため、Sobnikを置くのが面倒な場合は使用してください。



免責事項:私は全米リアルター協会に反対していません。 Avitoでは、特別なチェックマークが付いている場合はそれをオンにします-そして、誰もがあなたがエージェントであることをすぐに理解します。 そしてもちろん、私は多くの場合、エージェントが単に必要であることを知っています。 Sobnikは、スパムを送信するユーザーとのみ戦い、ユーザーを欺こうとします。



見込み



私はこのプロジェクトを次の2つの方向で開発する予定です。

  1. 新しいボードを追加します(次のボードは、おそらく手から手になります)。
  2. 検出器の精度と信頼性を向上させます。


理論的には、多くのボードがアクティブにスキャンされると、Sobnikは他のボードのエージェントによって公開されたコピーから元の所有者の広告を見つけることができます。 時間はこれらの高みに達することができます、そしてもちろんあなたの貴重なコメント。



収集した広告のデータベースを公開する予定はありません。この情報を盗み出し、配布するにはあまりにも勇気がいるでしょう。 ただし、Avitoの財務計画ではスパマー自身をフィルタリングすることは許可されていないため、Sobnikはこれを行います。



あなたの願いと提案はとても幸せです。



更新:



10月10日以降、データベースを埋める問題は解決されました-別のタブにインストールされたプラグインは、ユーザーが現在必要とする広告を自動的にスキャンします。 実際、現在、Sobnikは大規模なコンピューターネットワークであり、各ノードが共通の原因で機能しています。 したがって、すべての地域の広告のクリーンリストは、数分で処理されます。 ヘルプ、無料のサーバー、IP、インターネットチャネルを提供してくれたすべての人に感謝します。あなたの助けたいという願望は私を信じられないほど幸せにします。 しかし、現在、ソブニックはこれに対処しています。



All Articles