Python
google
セキュリティ
python2.7
More than 1 year has passed since last update.

必要に応じて自分で調べたメモ
タイトルの通りPythonでGoogle検索しよう!

環境

  • Python2.7
  • パッケージ↓
pip install google

https://breakingcode.wordpress.com/2010/06/29/google-search-python/
ここに説明がある
windowsならインストラーがあるがpipからでも動く

コード

使い方はすっごく簡単

# -*- coding: utf-8 -*-
from google import search

def google_search(query, limit=10):
    for url in search(query, lang="jp", num=limit):
        print url

def main():
    google_search("qiita")

if __name__ == '__main__':
    main()

https://qiita.com/
https://qiita.com/login
http://blog.qiita.com/
https://qiita.com/about
http://qiita.com/takeharu/items/bb154a4bc198fb102ff3
http://qiita.com/advent-calendar
http://qiita.com/tags
https://twitter.com/qiita?lang=ja
http://anond.hatelabo.jp/20150127003906
http://qrank.wbsrv.net/
https://ferret-plus.com/1856
http://hrnabi.com/2015/03/11/6001/
http://www.bunkei-programmer.net/entry/2016/10/16/225117

簡単に説明

#search()内の引数 ここがいわゆる検索オプションの指定部分
調べたいキーワード
query

トップレベルドメイン
tld='com'

地域の設定 日本から調べるなら「jp」
lang='en'

時間の設定 
tbs='0'
例)
"qdr:h" => 1時間以内
"qdr:d" => 24時間以内
"qdr:m" => 1ヶ月以内

サーチセーフのON・OFF
safe='off'

検索数
num=10

取得する最初のページ
start=0

取得する最後のページ
Noneなら検索し続ける
stop=None

Httpリクエスト待機時間
短すぎるとGoogleからIPブロックされるかも!
pause=2.0

urlがgoogle自体を指す場合除く
only_standard=False

ここで追加のHttpリクエストパラメータを指定
extra_params={}
例)
{'filter': '0'}

検索種類(画像、動画、ニュース、ショッピング、書籍、アプリ)の指定
tpe=''
例)
{videos: 'vid', images: 'isch', news: 'nws',shopping: 'shop', books: 'bks', applications: 'app'}

ユーザーエージェントの指定
user_agent=None

Google dorks

How to "Google dorks"
The concept of "Google Hacking" dates back to 2002, when Johnny Long began to collect interesting Google search queries that uncovered vulnerable systems and/or sensitive information disclosures - labeling them googleDorks. some people call it googlehacking.(「Google Hacking」のコンセプトは2002年にJohnny Long氏が脆弱のあるシステムや情報漏えいを発見するGoogle 検索を収集し始めgoogleDorksとラベリングした。人々はそれをgooglehackingと呼んだ)

In my opinion A Google dork is an employee who unknowingly exposes sensitive corporate information on the Internet.(私の考えではGoogle dorksはインターネット上に知らないうちに機密情報を漏洩させる従業員である。)

As a passive attack method, Google dorking can return usernames and passwords, email lists, sensitive documents, personally identifiable financial information (PIFI) and website vulnerabilities.(受動的な攻撃方法として、Google dorksはユーザー名、パスワード、メールリスト、機密文書、個人を特定可能な資産情報、Webサイトの脆弱性を返すことが出来る)

That information can be used for any number of illegal activities, including cyberterrorism, industrial espionage,identity theft and cyberstalking.(その情報はサイバーテロ、産業スパイ、サイバーストーキングなどさまざまな違法行為に利用できる)

etc...
http://null-byte.wonderhowto.com/how-to/use-google-hack-googledorks-0163566/

簡単に言えばGoogle検索を利用して脆弱性のWebサイトなどを発見(Hack)しようということ

コード

def google_search(query, limit=10):
    for url in search(query, lang="jp", pause=4.0, num=limit, user_agent="Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"):
        print url

def main():
    google_search("")

if __name__ == '__main__':
    main()

#google_search("intitle:index / mp4")
#google_search("inurl:wp-config.php")
#google_search("filetype:py")
#etc....

ここにいろいろ脆弱性を調べるキーワードが載ってる
Google Hacking Database

補足

使いすぎると・・・
Cut2017_0124_0412_01.jpg
極稀に出ますが・・・連続で2回も聞かれました…

  File "C:\Python27\lib\site-packages\google\__init__.py", line 304, in search
    html = get_page(url)
  File "C:\Python27\lib\site-packages\google\__init__.py", line 121, in get_page
    response = urlopen(request)
  File "C:\Python27\lib\urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python27\lib\urllib2.py", line 437, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 469, in error
    result = self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 656, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "C:\Python27\lib\urllib2.py", line 437, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 503: Service Unavailable