tag:crieit.net,2005:https://crieit.net/boards/route508-of-100days-of-code/feed
「Route508の100DaysOfCode」の投稿 - Crieit
Crieitで「Route508の100DaysOfCode」ボードに投稿された最近の投稿
2019-01-11T13:27:20+09:00
https://crieit.net/boards/route508-of-100days-of-code/feed
tag:crieit.net,2005:PublicArticle/4a376c9372902b8249a766e4464dfd04
2019-01-11T13:27:20+09:00
2019-01-11T13:27:20+09:00
https://crieit.net/boards/route508-of-100days-of-code/4a376c9372902b8249a766e4464dfd04
【Python】URLからIPアドレスを取得するソケット通信を利用してURLからIPアドレスを...
<h1>【Python】URLからIPアドレスを取得する</h1>
<p>ソケット通信を利用してURLからIPアドレスを取得してみましょう。</p>
<h2>正規表現とソケット通信でIPアドレス取得</h2>
<p>使用するモジュールはPython3.6標準のreとsocket。</p>
<p>コードは以下の通り。</p>
<pre><code># -*- coding: utf-8 -*-
import socket
import re
def url_to_domain(url):
try:
reg = r'https?://([\w\-.]+)'
return re.search(reg, url).group(1)
except:
return False
def domain_to_ipaddress(domain):
try:
return socket.gethostbyname(domain)
except:
return False
if __name__ == "__main__":
urls = ['https://www.google.com',
'http://www.ikedahayato.com/20190110/78056845.html',
'http://weblog.horiemon.com/100blog/48821/']
for url in urls:
print('-------------')
print(url)
domain = url_to_domain(url)
print(domain)
ipaddress = domain_to_ipaddress(domain)
print(ipaddress)
</code></pre>
<p>結果はこちら。</p>
<pre><code>-------------
[https://www.google.com](https://www.google.com)
www.google.com
172.217.25.100
-------------
[http://www.ikedahayato.com/20190110/78056845.html](http://www.ikedahayato.com/20190110/78056845.html)
www.ikedahayato.com
203.104.130.159
-------------
[http://weblog.horiemon.com/100blog/48821/](http://weblog.horiemon.com/100blog/48821/)
weblog.horiemon.com
99.84.138.23
</code></pre>
<p>まず正規表現でurlからドメイン部を抽出。<br />
次にソケット通信でIPアドレスを取得。</p>
<p>いろいろ試してみた結果、</p>
<ul>
<li>大手ニュース/検索サイトはアクセス分散のためか調べるたびにIPアドレスが変化する</li>
<li>ブログはライブドアなど同じサービスであればIPアドレスは同じ</li>
<li>ブログに独自ドメイン設定してもIPアドレスは同じ</li>
</ul>
<p>ドメインが異なっていても同じサーバー上にある可能性に注意。</p>
国道508号線