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. ピカソで読み込まれた画像からURLを取得
- 2. PHP経由でネットワークパスから画像を読み込む方法
- 3. URLからphp経由で最大の画像を取得
- 4. Android ListViewはインターネット経由で読み込んだ画像をミックスします
- 5. 特定のfloderからwebviewで画像を読み込む
- 6. WordPressでCSS経由で画像を読み込む方法
- 7. プロキシ経由でURLから画像データを取得し、base64に変換する
- 8. xsl画像を読み込んでメタデータを取得する
- 9. 画像ビューで別のアクティビティでカメラから取り込んだ画像を読み込む方法は?
- 10. AJAX経由で画像スライダを読み込む
- 11. Android:特定のディレクトリから画像を読み込む
- 12. 読み込んだPixiキャンバス画像
- 13. リンクタグからデータを読み込んで複数の画像を取得
- 14. Parseから画像を読み込んでimageViewに設定
- 15. イメージはURL経由で読み込まれません
- 16. AndroidリストビューURLからの画像ビューの読み込み
- 17. Webpackファイルローダー経由で読み込まれた画像がありません
- 18. ajax経由でダウンロードした画像データからexifを取得
- 19. ページを読み込んだ後、今日の日付をブートストラップのdatepicker経由で取得するには?
- 20. URLから画像を読み込んでアンドロイドのメモリに保存します
- 21. MWPhotoBrowserがWeb URLから画像を読み込んでいません
- 22. 読み込んだ画像をマウスで描画
- 23. Amazon S3からTransferUtility経由でアンドロイドで画像を取得できません
- 24. iOS:URLから画像を読み込み
- 25. 画像サーバーからの読み込み
- 26. HTTP経由でPythonでHTTPプロキシ経由でFTP URLを取得する
- 27. すべての画像を読み込んでください
- 28. Glideが画像を読み込んだときに画像がちらつく
- 29. Firefoxの拡張機能から読み込んだ画像を保存する
- 30. 4画像をアンドロイドのURLから読み込む方法は?
正確に何が必要なのかわかりません。 imgタグのurlとgrepからhtmlコンテンツを保存します。 これを行い、image/imageURLのリストを返すライブラリをお探しですか? – balki
私が見ている場合、ウェブページはすべてフラッシュで行われます。 TamperDataはページがロードされている間にイメージリクエストを見ることができますが、これらのイメージはページソースに含まれていません。それは理にかなっていますか? –
おそらく、swfファイルからURLを取得できません。できるのは、HTTPトラフィックをキャプチャしてイメージを直接コピーすることだけです。 [pycap](http://pycap.sourceforge.net/)またはwiresharkから "export object"を参照してください。 –