自动下载完整的.NET源代码

http://tech.ddvip.com   2008年01月24日    社区交流

本文详细介绍自动下载完整的.NET源代码

  1. Definitions

  The terms "reproduce," "reproduction" and "distribution" have the same meaning here as under U.S. copyright law.

  解决方法很简单,直接用正则表达式找到里面一个随机生成的id,然后程序自动Accept即可,代码类似

  private static Regex _accept = new Regex(@"IDYES:Accept:Accept=(w*)");
  
     if (task._auth)
     {
     }
     else
     {
      string license = Encoding.Unicode.GetString(task._buf, 0, read);
  
      Match m = _accept.Match(license);
  
      if (m.Success)
      {
  
       task._auth = true;
  
       string id = m.Groups[1].Value;
  
       _logger.DebugFormat("Accept license id {0} for {1}", id, task._request.Address);
  
       Uri uri = new Uri(string.Format("{0}?Accept={1}", task._uri.ToString(), id));
  
       task.Restart(uri);
      }
     }

  其他的基本上没什么需要说明的,就是很基本的http请求调用啥的,呵呵

  至于从.pdb里面获取文件名列表,需要调用dbghelp.dll里面的一组api

  SymInitializeW/SymCleanup用来初始化和析构symbol engine

  SymLoadModuleExW/SymUnloadModule64用来加载要便利源代码的模块

  SymEnumSourceFilesW用来遍历一个有.pdb符号且包含已索引源码的列表

  SymGetSourceFileW和SymGetSourceFileTokenW/SymGetSourceFileFromToken两套API,都可以用来获得特定源码的下载URL,然后把这个地址用上面两个方法处理一下即可。

  注意:目前的实现只是个原型,需要手动下载和配置.pdb文件,并且直接发起大量的异步http请求,对网速慢的朋友,可能需要用 -i 参数增加超时时间(确实15分钟)

责编:豆豆技术应用

正在加载评论...