URLをPython経由で読み込んで、そのURL経由で読み込まれたすべての画像のリストを取得する方法はありますか?私は基本的にTamperDataやFiddlerに似た何かをして、与えられたウェブサイトがロードしたすべての画像のリストを取得しようとしています。Python経由で特定のURLから読み込んだ画像を取得する
3
A
答えて
1
興味深い課題。 Jochen Ritzelによって提案された線に沿って、それを解決する1つの方法があります。
pycapの代わりにpylibpcapを使用します。個人的には、私はpycapが利用可能なドキュメントの量が少ないために動作しないことがわかります。 の場合、pylibpcapの場合は、のlibpcapの例から直接ほとんどのコードを翻訳できます(参考文献については、this tutorialなどを参照してください)。 tcpdumpとpcapのmanページも素晴らしいリソースです。
Ethernet,IPv4、TCP、およびHTTPの標準を参照してください。
注1:以下のコードは、HTTP GETリクエストのみを出力します。 urllib moduleを使用して画像をフィルタリングしてダウンロードしても問題はありません。
注2:このコードはLinuxで動作しますが、Windows/MacOSで使用するデバイス名は不明です。また、root権限が必要です。
#!/usr/bin/env python
import pcap
import struct
def parse_packet(data):
"""
Parse Ethernet/IP/TCP packet.
"""
# See the Ethernet, IP, and TCP standards for details.
data = data[14:] # Strip Ethernet header
header_length = 4 * (ord(data[0]) & 0x0f) # in bytes
data = data[header_length:] # Strip IP header
dest_port = struct.unpack('!H', data[2:4])[0]
if not dest_port == 80: # This is an outgoing package
return
header_length = 4 * ((ord(data[12]) & 0xf0) >> 4) # in bytes
data = data[header_length:] # Strip TCP header
return data
def parse_get(data):
"""
Parse a HTTP GET request, returning the request URI.
"""
if data is None or not data.startswith('GET'):
return
fields = data.split('\n')
uri = fields[0].split()[1]
for field in fields[1:]:
if field.lower().startswith('host:'):
return field[5:].strip() + uri
def packet_handler(length, data, timestamp):
uri = parse_get(parse_packet(data))
if not uri is None:
print uri
# Set up pcap sniffer
INTERFACE = 'wlan0'
FILTER = 'tcp port 80'
p = pcap.pcapObject()
p.open_live(INTERFACE, 1600, 0, 100)
p.setfilter(FILTER, 0, 0)
try:
while True:
p.dispatch(1, packet_handler)
except KeyboardInterrupt:
pass
関連する問題
- 1. Android ListViewはインターネット経由で読み込んだ画像をミックスします
- 2. 特定のfloderからwebviewで画像を読み込む
- 3. xsl画像を読み込んでメタデータを取得する
- 4. Android:特定のディレクトリから画像を読み込む
- 5. AJAX経由で画像スライダを読み込む
- 6. リンクタグからデータを読み込んで複数の画像を取得
- 7. ページを読み込んだ後、今日の日付をブートストラップのdatepicker経由で取得するには?
- 8. AndroidリストビューURLからの画像ビューの読み込み
- 9. 読み込んだ画像をマウスで描画
- 10. iOS:URLから画像を読み込み
- 11. Firefoxの拡張機能から読み込んだ画像を保存する
- 12. ページを読み込んだ後に画像を読み込む方法は?
- 13. 画像を読み込んだ後にアプリケーションがクラッシュする
- 14. Kingfisher - Webから画像URLを読み込むことができません。
- 15. リモートJSONの読み取りとURLからの画像の取得
- 16. AQGridview - Web(URL)から画像を読み込む
- 17. Fancybox - URLから画像を読み込むには?
- 18. 読み込んで画像のviewDidLoad
- 19. カラーボックスプラグインで読み込んだ後の実際の画像の幅と高さを取得する方法は?
- 20. AJAX経由のスクリプトタグの読み込み
- 21. OSX - WebViewに読み込まれた画像を取得する
- 22. Chrome拡張機能経由で読み込まれたURLのソースを取得しますか?
- 23. <img>のページを読み込んだ後にタグを埋め込んだときにimgの読み込みエラーが発生する(例:AJAX経由)
- 24. URLからMvx.MvxImageViewに画像が読み込まれない
- 25. 画像をドロウアブルフォルダから読み取る
- 26. AS3:Facebookのプロフィール画像を読み込んでいますが、特定の画像を読み込めません。
- 27. 画像ボックスにPgm画像を読み込んでいます
- 28. android ViewFlipper - 非同期画像を読み込んだ画像のスライドショー
- 29. Google画像:サムネイルURLから大きな画像URLを取得
- 30. ブートストラップアイソトープとlazyloadはjson経由で画像を取り込み/ロードします
正確に何が必要なのかわかりません。 imgタグのurlとgrepからhtmlコンテンツを保存します。 これを行い、image/imageURLのリストを返すライブラリをお探しですか? – balki
私が見ている場合、ウェブページはすべてフラッシュで行われます。 TamperDataはページがロードされている間にイメージリクエストを見ることができますが、これらのイメージはページソースに含まれていません。それは理にかなっていますか? –
おそらく、swfファイルからURLを取得できません。できるのは、HTTPトラフィックをキャプチャしてイメージを直接コピーすることだけです。 [pycap](http://pycap.sourceforge.net/)またはwiresharkから "export object"を参照してください。 –