一般的な情報
これは記事の第2部であり、OS MikrotikをHotSpotポイントとして使用する可能性を示しています。 最初の部分では、HotSpotのセットアップ方法について説明し、アクセスカードの発行と購入の可能性についても紹介しました。 ここで最初の部分に慣れることができます 。
タスクと目標
私たちの主な目標は、ユーザーがアクセスするすべてのサイトのすべてのHotSpotサイトに広告を実装する方法を学ぶことです。
ビルド、ビルド、いじくり:Mikrotik
まず、すべての要求がセカンダリサーバーを介してプロキシされるように、現在のHotSpotを少し再構築する必要があります。ルーターで次のコマンドを実行します。
/ip firewall nat add action=dst-nat chain=hs-auth comment="hotspot redirect to proxy" \ disabled=no dst-port=80 in-interface=!e2_v454 protocol=tcp to-addresses=\ XX.XX.XX.XX to-ports=3120 place-before=0
XX.XX.XX.XXはセカンダリサーバーのIPアドレスです。
3120-プロキシポート。
このルールは、すべてのトラフィックを補助プロキシサーバーにリダイレクトし、必要に応じて分析およびアップグレードします。
ビルド、ビルド、いじくり:補助サーバー
Centos 5.4をセカンダリサーバーとして使用します。 次のルールをiptablesに追加します。
#proxy -A VZ_INPUT -p tcp -m tcp --dport 3120 -j ACCEPT
フィルターテーブルの非標準の名前を使用します。フィルターテーブルを私のものとして変更する場合は、/ etc / sysconfig / iptablesファイルで次の変更を行います。
:OUTPUT DROP [0:0] :VZ_FORWARD - [0:0] :VZ_INPUT - [0:0] :VZ_OUTPUT - [0:0] -A INPUT -j VZ_INPUT. -A FORWARD -j VZ_FORWARD. -A OUTPUT -j VZ_OUTPUT.
トラフィックをプロキシするには、 Privoxyを使用します。これは、多数の接続を非常に迅速に処理します。
実験の最初に、perlとHTTP :: Proxyライブラリを使用しましたが、動作が非常に遅く、一般的にあまり安定しておらず、なぜ書かれた(ライブラリ)かは謎のままです。
# mkdir /usr/local/proxy mkdir /usr/local/proxy/privoxy cd /usr/local/proxy/privoxy # wget http://downloads.sourceforge.net/project/ijbswa/Sources/3.0.21%20%28stable%29/privoxy-3.0.21-stable-src.tar.gz # tar xvf privoxy-3.0.21-stable-src.tar.gz cd privoxy-3.0.21-stable make # bin mkdir /usr/local/proxy/privoxy/bin/
したがって、次のファイルのみをコピーします。
templates config logfile match-all.action privoxy run.sh user.action user.filter
テンプレートフォルダーには、次のファイルを配置することをお勧めします。
blocked cgi-error-404 cgi-error-bad-param cgi-error-disabled cgi-error-file cgi-error-file-read-only cgi-error-modified cgi-error-parse connect-failed connection-timeout forwarding-failed no-server-data no-such-domain
また、それぞれの内容を非常に単純なものに変更します(デフォルトでは、 Privoxyは不必要な情報をクライアントに提供します)。たとえば、 ブロックされたファイルは次のようになります。
<html><head> <title>This Page is Blocked</title> </head><body> <h1>Not Found</h1> <p>The requested URL @protocol@@hostport@@path@ was blocked on this server.</p> </body></html>
起動ファイルはrun.shです:
#!/bin/sh killall -9 privoxy ./privoxy
それを自動ロードに一時的に追加します(常に起動するにはserviceコマンドを使用した方がよいため)。
/usr/local/proxy/privoxy/bin/run.sh
ファイル/etc/rc.d/rc.local
セットアップ:Privoxy
このセクションでは、コメント付きの構成ファイルの例を示します。
構成 :
confdir . logdir . actionsfile user.action # filterfile user.filter # logfile logfile # listen-address XX.XX.XX.XX:3120 # accept-intercepted-requests 1 # # , toggle 1 enable-remote-toggle 0 enable-remote-http-toggle 0 enable-edit-actions 0 enforce-blocks 0 buffer-limit 4096 forwarded-connect-retries 0 allow-cgi-request-crunching 0 split-large-forms 0 keep-alive-timeout 5 socket-timeout 300 debug 12289
そして今、 user.actionファイル:
{+filter{inc_jsc} +filter{main_div_gl}} # inc_jsc main_div_gl / {-filter{open-link-in-self-frame} -filter{main_div_gl}} # . ( google google) .ad.doubleclick.net .ads.r.us/banners/ .google .googles. .googles .googleads. .doubleclick. .gstat.
実際、最も重要なuser.filterファイル:
FILTER: inc_jsc # head js , jquery, s@<head>@$&<script type="text\/javascript" src="http:\/\/lk.blablabla.ru\/js\/jquery.min.js"><\/script><script type="text\/javascript" src="http:\/\/lk.blablabla.ru/jscript"><\/script>@sigx FILTER: main_div_gl Add bottom baner s@</body(\s+\w+(\s*=\s*(\w+|'[^']*'|"[^"]*"))?)*\s*>@<div align="center" id="div_m_gl" style="display: none;">\n<script type="text\/javascript">\n <!-- \n google_ad_client = "ca-pub-YYYYYYYYYYYYYYYYYYY";\n google_ad_slot = "MMMMMMMMMM"; \n google_ad_width = 728; \n google_ad_height = 15; \n \/\/--> \n <\/script> \n <script type="text\/javascript" src="http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js"><\/script><\/div>$&@sigx
次に 、 lk.blablabla.ru / jscriptファイルを表示します。クライアントのアドレスとコンテンツをチェックし、これに応じて広告を含める場合と含めない場合、さらにこのファイルは動的であるため、表示をグローバルにオフにできますプロキシサーバーを停止せずに広告(広告の表示、有料アクセスを使用するクライアントなどのクライアントの並べ替えを禁止するサイトのリストを変更する):
$(document).ready(function() { var view = 1; var arr_links = ['blabla.ru', 'bla.ru', 'file'] // , , var a = document.URL; for (var i in arr_links) { var re = new RegExp(arr_links[i], 'i'); if (a.match(re)) { view = 0; } } // , if (view) { var state = 'block'; var layer_ref = 'div_m_gl'; if (document.all) { //IS IE 4 or 5 (or 6 beta) eval( "document.all." + layer_ref + ".style.display = state"); } if (document.layers) { //IS NETSCAPE 4 or below document.layers[layer_ref].display = state; } if (document.getElementById &&!document.all) { hza = document.getElementById(layer_ref); hza.style.display = state; } } });
おわりに
この記事では、HotSpotを使用して、さまざまな種類の控えめな広告でインターネットへのアクセスを無料で提供することで、$を獲得する方法を示したいと思いました。 また、プロジェクトの実装に関する知識を引き出した資料のリストを同封しています。
Mikrotikのホットスポット、または$の獲得方法:パート1
HTTP :: Proxy -Perlを使用してプロキシを作成するためのモジュール
Privoxy公式マニュアル
Mikrotikホットスポットのカスタマイズ-Mikrotikでのホットスポットの作成
Mikrotik IP Firewall Nat
Privoxy RegExp-ロシア語の良い記事
Centos Iptables公式マニュアル
PS>コメントを本当に楽しみにしています。質問に答えてうれしいです。