Good news: I've finally gotten around to using the Jakarta Commons Project's HttpClient user-agent, and it seems to do persistent connections properly (e.g. the succession of
/update URL requests are done on the same socket).
Bad news: The thus-modified iLeech still can't connect to an iTunes 4.2 server. There's an HTTP header,
Client-DAAP-Validation, followed by 32 hex digits, which is suspiciously MD5 hash like. Unfortunately, I don't know that they're hashing, and no one else on the net seems to have figured it out either.
Good news: Inspired by MyTunes, I've come with a different approach. Script iTunes (using the new GUI scripting add-ons), to sequentially connect to all of the shares. Use
tcpflow or its ilk to capture the traffic. Use the existing
daap parsing library to extract the music library contents for each client, and then dump all of the results into a database. Since this uses iTunes for the actual crawling, there's no danger of Apple breaking the system by changing the API.