Habréの評価を上げて気付かれないままにする方法







ある金曜日の夜、私は紅茶を飲みながら自宅のコンピューターに座って、記事を書き、人生について考えました。 仕事は論争したが、頭はそれまでに著しく減速し始めていた。 そして、窓の外ですでに完全に暗いとき、私は明日まで休息するために記事を送り、眠りにつくことにしました。 しかし、予想どおりにすべてをドラフトに保存する代わりに、オートパイロットの眠そうな脳は何らかの理由でそれを公開しました...







すぐには理解できませんでしたが、数分後にようやくプロファイルを更新しました。 まるで彼が台所のガスを止めていないようで、みんな死にかけていました。 ドラフトに戻すか、少なくとも削除できるように祈りました。 ちなみに、後者が判明したように、材料が一般的な見方をしている場合はもうできません。 その後、彼はこれらのサポートでこの主題について話しましたが、失敗に我慢することをお勧めしました)







私は苦しむことはありません-記事は最終的に巣に戻りました-しかし、ある種のサマリア人はすでに彼女にプラスを与えることができました。 しかし、最も興味深いのは、記事がサイト上に存在しなくなったにもかかわらず、得られた評価が私のプロフィールに残っていることです。







これは、産業規模で状況を再現するというアイデアを促さずにはいられませんでした。













その後、招待状を1つだけ集めたので、友人と共有し、同時に理論を確認することにしました。 もちろん、一度に1つの記事をクリックするのは退屈であり、さらに自尊心のある開発者には適していません。 さらに、捕まるだけの危険性があるため、あまり安全ではありません。







自動化します。







Habrahabrの盗聴



次のメソッドを取得する必要があります:記事の作成、公開、投票、ドラフトコピーでの記事の非表示。

承認プロセスは行われません。リダイレクトが多く複雑で、すべてのCookieを引き出してふりをするだけで十分なためです。 ぼろ ブラウザ。







Charles for MacをWebプロキシとして使用します。 非常に快適なもの。 開発者の方は、紳士用キットに入れておくことをお勧めします。 また、モバイルアプリケーションをデバッグする場合など、利用可能なデバイスからのトラフィックをリッスンすることもできます。







1つのセッション内で、必要なすべてのメソッドを正常に取得できます。













結局のところ、同じクエリが記事の作成、公開、削除を担当しますが、パラメータは異なります。 投稿を下書きとして作成するか、すぐに公開できます。 そして、これはあなたの投稿がサンドボックス、翻訳、または実行中の出版物に書き込まれる場所です。 たぶん、これはサンドボックスでの公開の要件を回避する機会を提供しますが、チェックしませんでした。 最も可能性が高いのは、サーバーがおかしなミスをして単純にホームにデプロイすることです。







実践的にチェック



私は実際に勝利を祝っており、投稿の作成をリクエストしています。







params = { :id => '', :post_type => 'simple', :flow => 5, :hubs => [20742], :title => 'test1', :text => 'test1', :tags_string => 'test1' } response = HTTParty.post('https://habrahabr.ru/json/topic/?action=save', headers: headers, body: params) #  id     params[:id] = JSON.parse(response.body)['redirect'].split('/')[2]
      
      





5に等しいフローと20742に等しいハブは乱数ではありませんが、詐欺に巻き込まれる可能性を減らすために、意図的に最も人気のないストリーム「その他」とハブ「閲覧室」を選択しました。







それでも、Habrは何らかの理由で拒否します。







 { "system_errors": [ "  " ] }
      
      





変です。 結局、すべてのパラメーターが正しく、post_typeが設定され、目的のパラメーターと完全に一致し、すべてのフィールドが配置されています。 プロキシからのリクエストを確認してください-動作します。 そして、コードから-エラー。







おかしいデバッグの後に判明したように、 Refererヘッダーが欠落している場合、APIへの要求はすべて失敗します。 使いやすさ。 また、別の面白いケース:ドラフトフィールドで指定されている値に関係なく、出版物はドラフトで作成されます。













費用が0である場合や、意味がわからない場合でも。







しかし、フィールドがまったくない場合、その記事はすでに一般的なストリームで公開されています。







OK、投稿が作成されました。投票できます。 ここのすべても非常にシンプルで、初めて起動しました:







 vote_headers = { 'Cookie' => HTTP::Cookie.cookie_value(vote_jar.cookies(habr_uri)), 'User-Agent' => 'Mozilla/5.0', 'Referer' => 'https://habrahabr.ru/top/', 'Content-Type' => 'application/x-www-form-urlencoded', 'Accept' => 'application/json' } vote_body = { #   ? 'ti' => params[:id], 'tt' => 2, 'v' => 1 } uri = URI.parse('https://habrahabr.ru/json/vote/') http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.path, vote_headers) request.body = URI.encode_www_form(vote_body) #    puts http.request(request).body
      
      





HTTPartyを介したリクエストは、必然的に投票の処理を拒否しました;私はnet / httpでカットする必要がありました。 もちろん、引数はAPIで最も話題になっているわけではありませんが、一般的には、すべてが明確です:パブリケーションIDと2つの魔法のパラメーター。 小学校。







自動化



今、すべて一緒に。 プロキシを介してCookieを取得します。最初に1つのアカウントから投稿し、次に2番目のアカウントから投票します。







リクエストを次々に開始し、すべてが良いようです。 そして、アカウントを変更するには、サイトに明確にログインする必要があることに気付きました。 しかし同時に、私のセッションはコードから引き続き機能しました。 つまり、誰もバックエンドで私のCookieをリセットしようとは考えませんでした。 Habr、どういうわけか、ユーザーに対してこれを行うのは良くありません。 セキュリティではありません。







そのままにして、ループでプロシージャを実行します。 遅滞なくツイストしますが、2回目の繰り返しで、イースターエッグの面白い間違いに遭遇します。







 { "system_errors": [ "   !" ] }
      
      





一部の高齢者は、子どもたちがチェーンでお互いに言葉を説明する「私を理解する」というプログラムがあったことを覚えています。 そして、もし2人が同じようにしたなら、ホストは言った:「そのようなプレーヤーを繰り返しなさい!」。 ゲームエントリへのリンク 。 これは、Habrを開発した人々の年齢について多くを語っているようです。







遅延を徐々に増やして、総当たりで投稿作成のタイムアウトに30秒かかることがわかります。 サイクルを開始して飲みに行きます 好きなケチャップ お茶







厚かましくならず、30ポイントで停止し、Habrのすべてのドラフトを取り消しました。













122位、悪くない。 それは最初の百に少し残っています。 そして、テスト投稿自体は次のとおりです。









ご覧のとおり、このサイトでのあなたの活動についての言及はありません。自分以外の投稿を見た人はいませんが、評価はあります。







おわりに



このように簡単な方法で、仲間の評価を静かに巻き上げることができます。







おそらくHabruは、この機能が悪用されないように、1日に複数の出版物に制限を設ける必要があります。 そして、私はまだログアウトでリセットセッションを行います。







ご清聴ありがとうございました。







PS私を禁止しないでください。 彼を禁止-sp1nfox 、これは彼が巻き上げられた評価です。







UPD:禁止は回避され、穴は修正され、1日あたりの投稿数に制限が導入されました。 効率のためにHabrとBoomburumのチームに感謝します!

UPD2: 1日あたり3件の投稿を制限します。








All Articles