<?xml version="1.0"?>
<rss version="2.0"><channel><title>All Activity</title><link>https://dev.doctormckay.com/discover/</link><description>McKay Development - All Activity</description><language>en</language><item><title>[node-globaloffensive] GC timeouts</title><link><![CDATA[https://dev.doctormckay.com/topic/5922-node-globaloffensive-gc-timeouts/?do=findComment&comment=14692]]></link><description>Hey, gc works half of the time, the second half just timeouts, i see this behaviour for atleast a week, does anybody know what could be the cause of it?</description><pubDate>Mon, 09 Mar 2026 11:34:34 +0000</pubDate></item><item><title>is there any to use manager.getInventoryContents() get itemcount on market?</title><link><![CDATA[https://dev.doctormckay.com/topic/5921-is-there-any-to-use-managergetinventorycontents-get-itemcount-on-market/?do=findComment&comment=14691]]></link><description><![CDATA[manager.getInventoryContents(730, 2, true, function (err, inventory){
  console.log("tradeable",inventory.length);
  tradeablecount = inventory.length;
});
manager.getInventoryContents(730, 16, false, function (err, inventory){
  console.log("protect",inventory.length);
  protectcount = inventory.length;
  if (inventorycount!="") {
    getMarketListings(cookies);
  }
});

******
if (marketListingsElement.length &gt; 0) {
  const listingscount = marketListingsElement.text().trim();
  console.log("market: " + listingscount);
  const parsedMarketCount = parseInt(String(listingscount).replace(/,/g, ''), 10);
  marketcount = Number.isNaN(parsedMarketCount) ? 0 : parsedMarketCount;
  const adjustedProtectCount = Math.max(0, protectcount - marketcount);
  const inventorycounttotal = "["+tradeablecount+","+adjustedProtectCount+","+marketcount+"]";

  if (inventorycount!=0) {
    request(Config.inventorycount.replace("{steamid64}",client.steamID).replace("{inventorycount}",inventorycounttotal), (err, res, body) =&gt; { if (err) {console.log("@debug inventorycount")}else{console.log("\n### 成功上传API inventorycount")}
    })
  }
} else {
  console.log("##  未找到市场上架数量元素 (my_market_selllistings_number)");

}


	now i use this code. but i want to know is there any way to get marketlisting like use manager.getInventoryContents
 


	because they on inventory now]]></description><pubDate>Sun, 08 Mar 2026 17:50:58 +0000</pubDate></item><item><title>is there any to use manager.getInventoryContents() get itemcount on market?</title><link><![CDATA[https://dev.doctormckay.com/topic/5921-is-there-any-to-use-managergetinventorycontents-get-itemcount-on-market/?do=findComment&comment=14690]]></link><description><![CDATA[manager.setCookies(cookies, (err) =&gt; {
    // console.log(manager)
    console.log("### 准备连接报价API")
    if(err){
      console.log("##  连接报价API失败")
      console.log("##  ERRmessage:" + err);
    } else {
      console.log("##  连接报价API成功");
      manager.getInventoryContents(730, 2, true, function (err, inventory){
        console.log("tradeable",inventory.length);
        tradeablecount = inventory.length;
      });
      manager.getInventoryContents(730, 16, false, function (err, inventory){
        console.log("protect",inventory.length);
        protectcount = inventory.length;
      });
      if (inventorycount!="") {
        getMarketListings(cookies);
      }
    }
  }); 

function getMarketListings(cookies) {
  console.log("### 开始查询Steam市场上架数量");
  
  // 构建cookie字符串
  let cookieString = '';
  if (Array.isArray(cookies)) {
    cookieString = cookies.join('; ');
  } else {
    cookieString = cookies;
  }
  
  // 第一步：先访问资格检查页面
  let eligibilityOptions = {
    url: 'https://steamcommunity.com/market/eligibilitycheck/?goto=%2Fmarket%2F',
    headers: {
      'Cookie': cookieString,
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
      'Accept-Language': 'zh-CN,zh;q=0.9,is;q=0.8',
      'Accept-Encoding': 'gzip, deflate, br, zstd',
      'Connection': 'keep-alive',
      'Pragma': 'no-cache',
      'Cache-Control': 'no-cache',
      'DNT': '1',
      'Upgrade-Insecure-Requests': '1',
      'Sec-Fetch-Site': 'none',
      'Sec-Fetch-Mode': 'navigate',
      'Sec-Fetch-User': '?1',
      'Sec-Fetch-Dest': 'document',
      'sec-ch-ua': '"Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"',
      'sec-ch-ua-mobile': '?0',
      'sec-ch-ua-platform': '"Windows"'
    },
    followRedirect: false, // 不自动跟随重定向
    timeout: 30000,
    gzip: true
  };
  
  // 如果使用代理，添加代理配置
  if (apiproxy === "1") {
    if (proxyset &amp;&amp; proxyset.indexOf("http") &gt;= 0) {
      eligibilityOptions.proxy = proxyset;
    } else if (proxyset &amp;&amp; proxyset.indexOf("sock") &gt;= 0) {
      eligibilityOptions.socksProxy = proxyset;
    } else if (proxyipuse) {
      eligibilityOptions.proxy = "http://" + proxyipuse;
    }
  }
  
  request(eligibilityOptions, function(error, response, body) {
    if (error) {
      console.log("##  资格检查失败: " + error);
      return;
    }
    
    // 获取新的cookies
    let newCookies = cookieString;
    if (response.headers['set-cookie']) {
      const additionalCookies = response.headers['set-cookie'].map(cookie =&gt; {
        return cookie.split(';')[0];
      }).join('; ');
      newCookies += '; ' + additionalCookies;
    }
    
    console.log("##  资格检查完成，准备访问市场页面");
    
    // 第二步：访问市场页面
    let marketOptions = {
      url: 'https://steamcommunity.com/market/',
      headers: {
        'Cookie': newCookies,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'Accept-Language': 'zh-CN,zh;q=0.9,is;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br, zstd',
        'Connection': 'keep-alive',
        'Pragma': 'no-cache',
        'Cache-Control': 'no-cache',
        'DNT': '1',
        'Upgrade-Insecure-Requests': '1',
        'Sec-Fetch-Site': 'none',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-User': '?1',
        'Sec-Fetch-Dest': 'document',
        'sec-ch-ua': '"Not;A=Brand";v="99", "Google Chrome";v="139", "Chromium";v="139"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"'
      },
      followRedirect: true,
      maxRedirects: 3,
      timeout: 30000,
      gzip: true
    };
    
    // 添加代理配置
    if (apiproxy === "1") {
      if (proxyset &amp;&amp; proxyset.indexOf("http") &gt;= 0) {
        marketOptions.proxy = proxyset;
      } else if (proxyset &amp;&amp; proxyset.indexOf("sock") &gt;= 0) {
        marketOptions.socksProxy = proxyset;
      } else if (proxyipuse) {
        marketOptions.proxy = "http://" + proxyipuse;
      }
    }
    if (inventorycount!="") {
      request(marketOptions, function(marketError, marketResponse, marketBody) {
          if (marketError) {
            console.log("##  查询市场上架数量失败");
            console.log("##  ERRmessage:" + marketError);
            return;
          }
          
          if (marketResponse.statusCode !== 200) {
            console.log("##  查询市场上架数量失败，状态码:" + marketResponse.statusCode);
            return;
          }
        
        try {
          // 使用cheerio解析HTML
          const $ = cheerio.load(marketBody);
          const marketListingsElement = $('#my_market_selllistings_number');
          
          if (marketListingsElement.length &gt; 0) {
            const listingscount = marketListingsElement.text().trim();
            console.log("market: " + listingscount);
            marketcount = listingscount;
            const inventorycounttotal = "["+tradeablecount+","+protectcount+","+marketcount+"]";

            if (inventorycount!=0) {
              request(Config.inventorycount.replace("{steamid64}",client.steamID).replace("{inventorycount}",inventorycounttotal), (err, res, body) =&gt; { if (err) {console.log("@debug inventorycount")}else{console.log("\n### 成功上传API inventorycount")}
              })
            }
          } else {
            console.log("##  未找到市场上架数量元素 (my_market_selllistings_number)");

          }
        } catch (parseError) {
          console.log("##  解析市场页面失败");
          console.log("##  ERRmessage:" + parseError);
        }
      });  
    }
  });
}


	i use this code can get protect tradeable marketlisting itemcount
 


	but now steam update a patch, item which marketlisting still use one shot on inventory, and it will belong protectcount, is there any way to get is clear?]]></description><enclosure url="https://dev.doctormckay.com/uploads/monthly_2026_03/1.png.fc1c926fd497cf52efc1d9fa4c9bbe93.png" length="139523" type="image/png"/><pubDate>Sun, 08 Mar 2026 16:36:04 +0000</pubDate></item><item><title>Rollbacked trades are missing rollback information.</title><link><![CDATA[https://dev.doctormckay.com/topic/5920-rollbacked-trades-are-missing-rollback-information/?do=findComment&comment=14688]]></link><description>I noticed that many people are complaining about not getting their items at all after today's rollback, so it might be an issue on Steam side after all.</description><pubDate>Fri, 06 Mar 2026 16:48:26 +0000</pubDate></item><item><title>Rollbacked trades are missing rollback information.</title><link><![CDATA[https://dev.doctormckay.com/topic/5920-rollbacked-trades-are-missing-rollback-information/?do=findComment&comment=14687]]></link><description>Hello, I have noticed that sometimes TF2 trades are being rollbacked by Steam and even though they have "tradeID", are rollbacked (can't be resent with identical same IDs, returns 26 when trying) and got state "6" (canceled) don't have any rollback information when I call getExchangeDetails. 
	Is this a known issue or something new that needs fixing?
 

	My guess is that the v12.2.2 update that fixed corrupt data on normal trade offers doesn't consider rollback data and when it's corrupt - no data gets returned. 
	(Just a guess at this moment)</description><pubDate>Fri, 06 Mar 2026 09:40:50 +0000</pubDate></item><item><title>Proxy and MobileApp</title><link><![CDATA[https://dev.doctormckay.com/topic/5919-proxy-and-mobileapp/?do=findComment&comment=14686]]></link><description>Hi, I have a socks5 proxy and use it for every package, but when I log in to the MobileApp, Steam shows my real location. SteamClient works good.
 


	here is proxy usage 
	 
	 
	here is steam devices screenshot - The mobile device should have the same location as the Steam client.</description><enclosure url="https://dev.doctormckay.com/uploads/monthly_2026_02/image.png.608ba0edade4aa43c10a8b76a8e6a2c7.png" length="159890" type="image/png"/><pubDate>Sat, 21 Feb 2026 20:45:46 +0000</pubDate></item><item><title>Connect whole Bot via Proxy (https?)</title><link><![CDATA[https://dev.doctormckay.com/topic/1719-connect-whole-bot-via-proxy-https/?do=findComment&comment=14685]]></link><description>Which paid or free proxies should be used for trading, reselling websites then could you please help out?</description><pubDate>Tue, 17 Feb 2026 09:55:37 +0000</pubDate></item><item><title>showing the fast traded items before 10 days invisibility duration</title><link><![CDATA[https://dev.doctormckay.com/topic/5913-showing-the-fast-traded-items-before-10-days-invisibility-duration/?do=findComment&comment=14684]]></link><description>I'm trying to use the getUserInventoryContents but I'm always getting error 400 without explaining more. Can you help?</description><pubDate>Tue, 03 Feb 2026 11:24:28 +0000</pubDate></item><item><title>Download .manifest files</title><link><![CDATA[https://dev.doctormckay.com/topic/1066-download-manifest-files/?do=findComment&comment=14683]]></link><description>If you want to scrape from the account, you can use depot dumper mod.</description><pubDate>Sun, 25 Jan 2026 00:05:59 +0000</pubDate></item><item><title>Private Beta Branch</title><link><![CDATA[https://dev.doctormckay.com/topic/5910-private-beta-branch/?do=findComment&comment=14682]]></link><description>Heyo, I was just wondering if there's any plans for you to fix this @Dr. McKay?</description><pubDate>Thu, 22 Jan 2026 11:21:04 +0000</pubDate></item><item><title>steamcommunity error: Could not act on confirmation</title><link><![CDATA[https://dev.doctormckay.com/topic/5918-steamcommunity-error-could-not-act-on-confirmation/?do=findComment&comment=14681]]></link><description>Good day, everyone! 
	I've been trying to solve a trade confirmation issue for three days now. 
	All other requests are working perfectly, but trade confirmations specifically return the "Could not act on confirmation" error. 
	The raw request returns a 200 status code with {"success": false}. Does anyone know what might be causing this or how to fix it?
 


	For context: my identity_secret is correct, and other requests handle successfully. 
	I am attaching a script with logic similar to my project. I would be very grateful for any help! 
	 
	Version of node-steamcommunity: 3.49.0
 


	test.js</description><pubDate>Fri, 16 Jan 2026 12:24:32 +0000</pubDate></item><item><title>Account deletion link not working</title><link><![CDATA[https://dev.doctormckay.com/topic/5917-account-deletion-link-not-working/?do=findComment&comment=14680]]></link><description>Hello!
 


	I just tried to delete my account.
 


	After receiving the account deletion e-mail and clicking on the link it doesn't work. 
 


	Can someone please delete my account, thanks!</description><pubDate>Thu, 15 Jan 2026 19:25:15 +0000</pubDate></item><item><title>inspect screenshot tools</title><link><![CDATA[https://dev.doctormckay.com/topic/5916-inspect-screenshot-tools/?do=findComment&comment=14679]]></link><description>Thanks, that makes sense. 
	I suspected that at some point you have to rely on the game client itself, and your explanation about the GC vs client-side rendering logic really clarified it for me. Appreciate the insight.</description><pubDate>Sat, 10 Jan 2026 07:00:24 +0000</pubDate></item><item><title>inspect screenshot tools</title><link><![CDATA[https://dev.doctormckay.com/topic/5916-inspect-screenshot-tools/?do=findComment&comment=14678]]></link><description>You have to use the game client code somehow, whether that's injection or hooking or whatever. The GC only sends the raw data (paint seed, paint index, wear, etc) but the code to turn that into a model or image is only inside the game client.</description><pubDate>Sat, 10 Jan 2026 06:31:35 +0000</pubDate></item><item><title>Disparency between recentSteam Logins and teh Authorized devices</title><link><![CDATA[https://dev.doctormckay.com/topic/5914-disparency-between-recentsteam-logins-and-teh-authorized-devices/?do=findComment&comment=14677]]></link><description>thats fine but you see the disparency in the auth devices y is that? what causes it? i am using the proxy always in the steam user and community thne how steam gets the location sometimes wrong</description><pubDate>Mon, 05 Jan 2026 11:28:01 +0000</pubDate></item><item><title>inspect screenshot tools</title><link><![CDATA[https://dev.doctormckay.com/topic/5916-inspect-screenshot-tools/?do=findComment&comment=14676]]></link><description>I&#x2019;m trying to build a screenshot service similar to BUFF and CSMoney
 


	Ideally, the full pipeline would cover everything from an action/inspect link (e.g., steam://rungame/... +csgo_econ_action_preview ...) to generating clean, high-quality, UI-free weapon screenshots.
 


	However, I found a YouTube video showing a Python-based method to capture images: 
	https://www.youtube.com/watch?v=HUIERG6r-t0 
	This looks more like a manual/automation screenshot workflow inside the game, and it may not match what I want in terms of scalability.
 


	I also noticed this site: 
	https://cs2inspects.com/zh-CN/screenshots 
	It seems able to generate screenshots using only paint seed, paint index, and float (wear), without requiring an inspect link.
 


	Or does achieving this level of control usually rely on in-game injection or memory hooking?</description><pubDate>Mon, 05 Jan 2026 06:58:45 +0000</pubDate></item><item><title>Disparency between recentSteam Logins and teh Authorized devices</title><link><![CDATA[https://dev.doctormckay.com/topic/5914-disparency-between-recentsteam-logins-and-teh-authorized-devices/?do=findComment&comment=14675]]></link><description>Cursor is wrong. Passing the httpProxy option to LoginSession is unnecessary because the CMAuthTransport handles proxying already. All login communication happens through the same proxied TCP/WS connection as all other Steam client communication.</description><pubDate>Wed, 31 Dec 2025 03:47:11 +0000</pubDate></item><item><title>Creating and tracking an order: how to place a purchase and find out its status and cost</title><link><![CDATA[https://dev.doctormckay.com/topic/5915-creating-and-tracking-an-order-how-to-place-a-purchase-and-find-out-its-status-and-cost/?do=findComment&comment=14674]]></link><description>Hello everyone
 


	How and by what method can I create an order to purchase an item and then find out the status of the order? And then where can I find out exactly how much money the item was bought for?</description><pubDate>Tue, 23 Dec 2025 22:13:23 +0000</pubDate></item><item><title>Disparency between recentSteam Logins and teh Authorized devices</title><link><![CDATA[https://dev.doctormckay.com/topic/5914-disparency-between-recentsteam-logins-and-teh-authorized-devices/?do=findComment&comment=14673]]></link><description><![CDATA[i prompted cursor to find the reason can you take a look at this response and see if its useful ? 
	 
 


	
		Bug confirmed
	



	The issue is that steam-user does not pass the httpProxy option to LoginSession, even though steam-session supports it.



	
		The bug
	



	File: E:\Bots\node_modules\steam-user\components\03-messages.js (lines 738-750)



	Current code (broken):_getLoginSession() {



	
		
			
				
					
						
							
								
									
										
											    if (!this._loginSession) {
										

										
											        let options = {
										

										
											            transport: new CMAuthTransport(this),
										

										
											            machineId: this._logOnDetails?.machine_id
										

										
											        };
										

										
											        
										

										
											        let customMachineName = this._logOnDetails?.machine_name || '';
										

										
											        if (customMachineName.length &gt; 0) {
										

										
											            options.machineFriendlyName = customMachineName;
										

										
											        }
										

										
											        
										

										
											        this._loginSession = new LoginSession(EAuthTokenPlatformType.SteamClient, options);
										

										
											        // ❌ Missing: httpProxy is NOT passed!
										

										
											    }
										

										
											    
										

										
											    return this._loginSession;
										

										
											 
										
									
								
							
						
					
				
			
		
	



	
		What should happen
	



	steam-session's LoginSession accepts httpProxy in its options (see interfaces-external.ts line 46), and uses it to create a proxied HTTP client (see LoginSession.ts lines 116-117 and 122-125).



	
		The fix
	



	Pass the proxy from steam-user's options:_getLoginSession() {



	
		
			
				
					
						
							
								
									
										
											    if (!this._loginSession) {
										

										
											        let options = {
										

										
											            transport: new CMAuthTransport(this),
										

										
											            machineId: this._logOnDetails?.machine_id
										

										
											        };
										

										
											        
										

										
											        // ✅ ADD THIS:
										

										
											        if (this.options.httpProxy) {
										

										
											            options.httpProxy = this.options.httpProxy;
										

										
											        }
										

										
											        
										

										
											        let customMachineName = this._logOnDetails?.machine_name || '';
										

										
											        if (customMachineName.length &gt; 0) {
										

										
											            options.machineFriendlyName = customMachineName;
										

										
											        }
										

										
											        
										

										
											        this._loginSession = new LoginSession(EAuthTokenPlatformType.SteamClient, options);
										

										
											    }
										

										
											    
										

										
											    return this._loginSession;
										

										
											}]]></description><pubDate>Tue, 23 Dec 2025 14:16:59 +0000</pubDate></item><item><title>Disparency between recentSteam Logins and teh Authorized devices</title><link><![CDATA[https://dev.doctormckay.com/topic/5914-disparency-between-recentsteam-logins-and-teh-authorized-devices/?do=findComment&comment=14672]]></link><description>I am seeing a weird pattern the logins are all in the right place but steam shows authorized devices sometimes way off target and issues the your steam account was accessed by some one else y is that hapening any clue we use trading sites also so they collect our steam token too.
 

 
 
 
 
 
  


	@Dr. McKay</description><enclosure url="https://dev.doctormckay.com/uploads/monthly_2025_12/Screenshot_2563.png.c97c867c7d27428630a7e8cd0fa54306.png" length="154294" type="image/png"/><pubDate>Tue, 23 Dec 2025 11:36:57 +0000</pubDate></item><item><title>Help with getServerList</title><link><![CDATA[https://dev.doctormckay.com/topic/1657-help-with-getserverlist/?do=findComment&comment=14671]]></link><description>It's possible that the request is no longer supported by Steam.</description><pubDate>Tue, 23 Dec 2025 01:46:39 +0000</pubDate></item><item><title>Help with getServerList</title><link><![CDATA[https://dev.doctormckay.com/topic/1657-help-with-getserverlist/?do=findComment&comment=14670]]></link><description>Other filter strings (\\ip\\208.103.169.222 or \\appid\\480) also do not return data.</description><pubDate>Tue, 23 Dec 2025 01:26:21 +0000</pubDate></item><item><title>Help with getServerList</title><link><![CDATA[https://dev.doctormckay.com/topic/1657-help-with-getserverlist/?do=findComment&comment=14669]]></link><description>740 is not the right AppID, use 730.</description><pubDate>Tue, 23 Dec 2025 01:18:05 +0000</pubDate></item><item><title>Help with getServerList</title><link><![CDATA[https://dev.doctormckay.com/topic/1657-help-with-getserverlist/?do=findComment&comment=14668]]></link><description><![CDATA[The getServerList method does not return data (version 5.2.3 or 5.3.0):
 


	client.logOn({anonymous: true});

client.on('loggedOn', async () =&gt; {
        client.getServerList("\\appid\\740", 50).then(function (servers) {
		console.log(servers);
    });
});

	
		 
	 



	This code worked half a year ago.]]></description><pubDate>Tue, 23 Dec 2025 00:45:23 +0000</pubDate></item><item><title>Missing variables from 'getInventoryContents'/'getUserInventoryContents'</title><link><![CDATA[https://dev.doctormckay.com/topic/5912-missing-variables-from-getinventorycontentsgetuserinventorycontents/?do=findComment&comment=14667]]></link><description>Any ETA on this update?</description><pubDate>Sat, 20 Dec 2025 11:13:58 +0000</pubDate></item></channel></rss>
