From 7d9f3fe6fb57a7bfb460bc610acb9e19bb1f2928 Mon Sep 17 00:00:00 2001 From: mrpond Date: Mon, 16 Sep 2019 23:06:05 +0700 Subject: [PATCH] performance improve, you'll notice it! --- README.md | 4 +-- chrome_elf.zip | Bin 45990 -> 42315 bytes src/BlockTheSpot.vcxproj | 2 ++ src/dllmain.cpp | 19 ++++++++--- src/hosts.cpp | 68 ++++++++++++++++++++++++++++++++++++--- src/hosts.h | 59 +++++++++++++++++++++++++++++++++ 6 files changed, 141 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 22cf17cf..3e8e8362 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Please do support Spotify by using premium!!!! ## Video, audio & banner adblock/skip for Spotify -**Current Version:** 0.22 +**Current Version:** 0.23 -**Last updated:** 14 September 2019 +**Last updated:** 16 September 2019 **Last tested version:** 1.1.15.448.g00fba0e3 diff --git a/chrome_elf.zip b/chrome_elf.zip index 208cf18dcd306679eff0cc158c206d64e4424e25..2fc08737d9f7c292fe2b013e7b9f8490249f4225 100644 GIT binary patch literal 42315 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 H00000rNP&4 literal 45990 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 aii?Z?@vAH0;{6K@#C%OKXP$p?1O5-YLJL>` diff --git a/src/BlockTheSpot.vcxproj b/src/BlockTheSpot.vcxproj index b06b411d..ce08700a 100644 --- a/src/BlockTheSpot.vcxproj +++ b/src/BlockTheSpot.vcxproj @@ -50,6 +50,8 @@ chrome_elf $(ProjectDir)..\ + $(ACE_ROOT);$(IncludePath) + $(ACE_ROOT)\lib;$(LibraryPath) diff --git a/src/dllmain.cpp b/src/dllmain.cpp index 84a1448d..6d682750 100644 --- a/src/dllmain.cpp +++ b/src/dllmain.cpp @@ -10,10 +10,21 @@ BOOL APIENTRY DllMain (HMODULE hModule, { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls (hModule); - // block the ads banner by hostname - InstallHookApi ("ws2_32.dll", "getaddrinfo", getaddrinfohook); - // real ads block - InstallHookApi ("Winhttp.dll", "WinHttpOpenRequest", winhttpopenrequesthook); + // block the ads banner by hostname. + // but I like new song ad. + //InstallHookApi ("ws2_32.dll", "getaddrinfo", getaddrinfohook); + + // real ads block, no data out + InstallHookApi ("Winhttp.dll", "WinHttpSendRequest", winhttpsendrequesthook); + InstallHookApi ("Winhttp.dll", "WinHttpSetStatusCallback", winhttpsetstatuscallbackhook); + // we don't need it, for future only. + //InstallHookApi ("Winhttp.dll", "WinHttpWriteData", winhttpwritedatahook); + //InstallHookApi ("Winhttp.dll", "WinHttpReceiveResponse", winhttpreceiveresponsehook); + //InstallHookApi ("Winhttp.dll", "WinHttpQueryDataAvailable", winhttpquerydataavailablehook); + + // archive + // sent only clicked playlist data back to Spotify. + //InstallHookApi ("Winhttp.dll", "WinHttpOpenRequest", winhttpopenrequesthook); break; } return TRUE; diff --git a/src/hosts.cpp b/src/hosts.cpp index db3e0a81..81afe714 100644 --- a/src/hosts.cpp +++ b/src/hosts.cpp @@ -14,11 +14,16 @@ int WINAPI winhttpopenrequesthook (DWORD RetAddr, //"spclient.wg.spotify.com" //POST //L"/ad-logic/state/config" - //L"/playlist-publish/v1/subscription/playlist/xxxxx" - //GET + //L"/ad-logic/flashpoint" /* this is ad between song/popup */ + //L"/playlist-publish/v1/subscription/playlist/xxxxx" /* sent when change playlist */ + //GET /* payload are base64 */ //L"/ads/v2/config?payload=xxxxx" + //L"/ads/v1/ads/hpto?payload=xxxxx" //L"/ads/v1/ads/leaderboard?payload=xxxxx - //HEADER + //L"/pagead/conversion/?ai=xxxxx" + //L"/monitoring?pload=xxxxx" + //L"/pcs/view?xai=xxxxx" + //HEADER /* add into every request */ //L"User-Agent: Spotify/111500448 Win32/0 (PC laptop)" //L"Authorization: Bearer xxxxx" @@ -31,10 +36,12 @@ int WINAPI winhttpopenrequesthook (DWORD RetAddr, ppwszAcceptTypes, dwFlags); } - return NULL; + else { + // the failed will retry.. not good. + return 0; + } } - int WINAPI getaddrinfohook (DWORD RetAddr, pfngetaddrinfo fngetaddrinfo, const char* nodename, @@ -49,3 +56,54 @@ int WINAPI getaddrinfohook (DWORD RetAddr, } return fngetaddrinfo (nodename, servname, hints, res); } + +int WINAPI winhttpsendrequesthook (DWORD RetAddr, + pfnwinhttpsendrequest fnwinhttpsendrequest, + HINTERNET hRequest, + LPCWSTR pwszHeaders, + DWORD dwHeadersLength, + LPVOID lpOptional, + DWORD dwOptionalLength, + DWORD dwTotalLength, + DWORD_PTR dwContext) +{ + return 1; // return success but nothing sent +} + +int WINAPI winhttpwritedatahook (DWORD RetAddr, + pfnwinhttpwritedata fnwinhttpwritedata, + HINTERNET hRequest, + LPCVOID lpBuffer, + DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten) +{ + return 1; // return success but nothing write +} + +int WINAPI winhttpreceiveresponsehook (DWORD RetAddr, + pfnwinhttpreceiveresponse fnwinhttpreceiveresponse, + HINTERNET hRequest, + LPVOID lpReserved) +{ + return 1; // return success but nothing receive +} + +int WINAPI winhttpquerydataavailablehook (DWORD RetAddr, + pfnwinhttpquerydataavailable fnwinhttpquerydataavailable, + HINTERNET hRequest, + LPDWORD lpdwNumberOfBytesAvailable) +{ + //lpdwNumberOfBytesAvailable = 0; + return 1; // return success with 0 byte to read +} + +int WINAPI winhttpsetstatuscallbackhook (DWORD RetAddr, + pfnwinhttpsetstatuscallback fnwinhttpsetstatuscallback, + HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, + DWORD_PTR dwReserved) +{ + // lpfnInternetCallback - Set this to NULL to remove the existing callback function. + return fnwinhttpsetstatuscallback (hInternet, NULL, dwNotificationFlags, NULL); +} diff --git a/src/hosts.h b/src/hosts.h index 6fe4e674..ce5ac5cc 100644 --- a/src/hosts.h +++ b/src/hosts.h @@ -14,6 +14,30 @@ typedef int (__stdcall* pfnwinhttpopenrequest)(HINTERNET hConnect, LPCWSTR* ppwszAcceptTypes, DWORD dwFlags); +typedef int (__stdcall* pfnwinhttpquerydataavailable)(HINTERNET hRequest, + LPDWORD lpdwNumberOfBytesAvailable); + +typedef int (__stdcall* pfnwinhttpsendrequest)(HINTERNET hRequest, + LPCWSTR pwszHeaders, + DWORD dwHeadersLength, + LPVOID lpOptional, + DWORD dwOptionalLength, + DWORD dwTotalLength, + DWORD_PTR dwContext); + +typedef int (__stdcall* pfnwinhttpwritedata) (HINTERNET hRequest, + LPCVOID lpBuffer, + DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + +typedef int (__stdcall* pfnwinhttpreceiveresponse) (HINTERNET hRequest, + LPVOID lpReserved); + +typedef int (__stdcall* pfnwinhttpsetstatuscallback) (HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, + DWORD_PTR dwReserved); + int WINAPI winhttpopenrequesthook (DWORD RetAddr, pfnwinhttpopenrequest fnwinhttpopenrequest, HINTERNET hConnect, @@ -32,6 +56,40 @@ int WINAPI getaddrinfohook (DWORD RetAddr, const struct addrinfo* hints, struct addrinfo** res); +int WINAPI winhttpquerydataavailablehook (DWORD RetAddr, + pfnwinhttpquerydataavailable fnwinhttpquerydataavailable, + HINTERNET hRequest, + LPDWORD lpdwNumberOfBytesAvailable); + +int WINAPI winhttpsendrequesthook (DWORD RetAddr, + pfnwinhttpsendrequest fnwinhttpsendrequest, + HINTERNET hRequest, + LPCWSTR pwszHeaders, + DWORD dwHeadersLength, + LPVOID lpOptional, + DWORD dwOptionalLength, + DWORD dwTotalLength, + DWORD_PTR dwContext); + +int WINAPI winhttpwritedatahook (DWORD RetAddr, + pfnwinhttpwritedata fnwinhttpwritedata, + HINTERNET hRequest, + LPCVOID lpBuffer, + DWORD dwNumberOfBytesToWrite, + LPDWORD lpdwNumberOfBytesWritten); + +int WINAPI winhttpreceiveresponsehook (DWORD RetAddr, + pfnwinhttpreceiveresponse fnwinhttpreceiveresponse, + HINTERNET hRequest, + LPVOID lpReserved); + +int WINAPI winhttpsetstatuscallbackhook (DWORD RetAddr, + pfnwinhttpsetstatuscallback fnwinhttpsetstatuscallback, + HINTERNET hInternet, + WINHTTP_STATUS_CALLBACK lpfnInternetCallback, + DWORD dwNotificationFlags, + DWORD_PTR dwReserved); + static const char* blockhost[] = { // fork this if you found more... I'll check if had time. "google.ac", @@ -487,6 +545,7 @@ static const char* blockhost[] = { "beacons5.gvt3.com", "clients2.google.com", "crashdump.spotify.com", + "invitemedia.com", "adeventtracker.spotify.com", /* ad tracker */ "dealer.spotify.com" /* unknown */ //"cache.spotify.com" /* not working */