2008-07-06

pythonで携帯IP制限

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
携帯専用ページにするには、各携帯キャリアのIPアドレスを利用して制限をかけるみたいです。
通常は、htaccessとかでwebブラウザにこのお仕事を任せるのが通常のやり方のようなのですが、pythonのプログラム側で実装してみたいなぁと思ったので試してみました。

まずは、各携帯キャリアの利用IPアドレスが必要なわけですが、それは
http://d.hatena.ne.jp/tomisima/20070903/1188836400
を利用することで取得することができます。
これで取得した結果を適当にファイルなどに保存したりして利用します。

あんまりpython詳しくないのでいまいちな書き方の可能性が高いけど、私はこんな感じでやってみました。
各キャリアのサブネットは24より小さいことはありえないだろうという勝手な思い込みが前提です。


from mobilejp import MobileJP

m = MobileJP()
ret = m.get_cidr()

iplist = []
for carrier in ret :
for cidr in ret[carrier] :
parts = cidr.split("/")
quads = parts[0].split(".")
quads.append(parts[1])
iplist.append(quads)

chkip = os.getenv('REMOTE_ADDR')

q = chkip.split(".")
find = False
for cidr in iplist :
if int(cidr[0]) != int(q[0]) :
continue;
if int(cidr[1]) != int(q[1]) :
continue;
if int(cidr[2]) != int(q[2]) :
continue;
chk4 = int(q[3])
chk4 = chk4 >> (32 - int(cidr[4]))
chk4 = chk4 << (32 - int(cidr[4]))
if int(cidr[3]) == chk4 :
print "OK"
find = True
break;
if find == False :
print "NO"


こんな感じでできていそうな気がします。
コメントを投稿