Hey and welcome!
Short answer: I haven't found any good way of getting the servlist. And trust me I have spent a lot of time of doing this.
CoD WaW if you have looked in Luigi's forum you can read that CoD WaW is using Deamonware for the serverlist and isn't not based on Gamespy protocol (I have posted myself there

).
However this protocol is encrypted and requires authentication etc.. Therefore I haven't done any full implement of CoD WaW master serverlist.
The truth is which is no secret as other claims to do, CoD WaW is "handcrafted" and static, so I update the serverlist manually once and a while.
I know for fact that ETQW (Splash Damage has done good work for the community) which is also based on Deamonware, they opened up the master server list for third parts softwares, and Treyarch which I think is arrogant to the community they haven't commented anything on their forum or what ever.
It has been absolutly silence from them.
To give you some options in the dark...
I had some conversation with a dude that did some reverse engineering of the cache file for CoD WaW he managed to track most of the data. Not sure if he completed anything with. Basicly if you are lucky owner of the game you could open it up and update the cache file and then parse the file itself for a fresh serverlist.
So, I filemon'd (from sysinternals) CoD WaW and saw where it was accessing the servercache when i refreshed the list, it is in:
C:\Documents and Settings\[user name]\Local Settings\Application Data\Activision\CoDWaW\servercache.dat
I cracked it open with a hexeditor, and started looking for 71 20 hex, found tons of them, enough to justify 4149 servers that came back in the listing.
Anything in caps inside [] I'm pretty certain about, anything lowercase with a ? I'm uncertain, anything with just a ? I'm totally clueless.
The formatting got messed up when I pasted so I attached instead, to summarize the format is essentially
Offset Name Size Desc
0000 signature byte[4] I've noticed this is either 04 or 02, not sure what it means
0004 ip addr dword The IP address to the server.
0008 port word The port number.
000A reserved? byte[16] Always empty (zeros)
001A pure? byte Not sure if this is right.
001B version? byte Not sure if this is right.
001C password? byte Not sure if this is right.
001D players byte Actual players playing.
001E maxPlayers byte Max allowed players.
001F allowAnon byte Not sure if this is right.
0020 floodprotect byte Not sure if this is right.
0021 private byte Not sure if this is right.
0022 stockMaps byte Not sure if this is right.
0023 protocol byte Not sure if this is right.
0024 unknown byte[4] ???????
0028 minping word Minimum ping allowed.
002A maxping word Maximum ping allowed.
0x2C unknown byte[9] ?????
0x35 serverName byte[32] Server name (color codes are ^ followed by a number)
0x55 mapName byte[32] Map file name
0x75 modName byte[24] Mod name (if none, zeroes)
0x8D gameType byte[?] Game type, dm (free for all), tdm (team deathmatch), koth (king of the hill), etc, Is 35 bytes, but might be 16 to 32 bytes in length with remainder as padding?
0xB0 END
176 bytes per record, there is no header in the file, just record after record. I sent you my server cache file, it is 3,542,544 bytes, though it only contains 730,240 bytes of actual content, the remainder is zero padding. 730240 / 176 = 4149, exactly how many servers the browser listing said there were in the game itself.
struct GAMESERVER_HEADER
{
BYTE sig[4];
DWORD addr;
WORD port;
BYTE reserved[16];
BYTE pure;
BYTE version;
BYTE password;
BYTE playerCount;
BYTE maxPlayers;
BYTE allowAnon;
BYTE floodProtect;
BYTE private;
BYTE stock;
BYTE protocol;
BYTE a[4];
WORD minping;
WORD maxping;
BYTE b[9];
BYTE serverName[32];
BYTE mapName[32];
BYTE modName[24];
BYTE gameType[16];
BYTE c[19];
} waw_server, *pwaw_server;
I haven't tested this out, but this is what I've formulated so far. What do you think? I guess this could be a temporary solution until treyarch gets off their butts and opens up access to the ipgetter. Next, just have to figure out the whole launch game at intervals to grab lists. I'm guessing this is what gametracker did, or they are in the door with demonware.
Either way, if you code up a little tool you can convert servercache.dat files into your IP list format. Might be an easy way to occasionally give yourself a fresh list, even if fresh means weekly/daily. Probably better than what most tools/sites provide, not quite as static.
Hope this helps a bit...