HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
X-Tx-Id: d2775d6b-8607-4748-8978-bb19fc042f10
Access-Control-Allow-Origin: http://download.cnet.com
Access-Control-Allow-Credentials: true
Vary: x-originallang
Vary: x-cnet-is-mobile-device
Vary: Accept-Encoding
Cache-Control: private, max-age=2592000
Expires: Fri, 07 Apr 2017 19:00:33 GMT
Date: Wed, 08 Mar 2017 19:00:33 GMT
Transfer-Encoding:  chunked
Connection: keep-alive
Connection: Transfer-Encoding
Set-Cookie: fly_device=desktop; path=/; httponly
Set-Cookie: dl_ad=%7B%22region%22%3A%22aw%22%2C%22type%22%3A%22gpt%22%2C%22session%22%3A%22a%22%2C%22subSession%22%3A%22b%22%7D; path=/

<!DOCTYPE html>
<html class="mobile">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />        
        <title>CNET Download - Free Software, Apps, Downloads, and Reviews</title>
        
            
<meta name="description" content="CNET Download - Find the latest free software, apps, downloads, and reviews for Windows, Mac, iOS, and Android." />
<meta name="keywords" content="Free software downloads and software reviews - CNET Download.com" />

    <link rel="canonical" href="http://download.cnet.com/"/>





<meta name="twitter:site" content="@CNETDownloads">


    <meta name="twitter:title" content="Free software downloads and software reviews - CNET Download.com">

    <meta name="twitter:description" content="CNET Download.com provides free downloads for Windows, Mac, iOS and Android computers and mobile devices. Every category of desktop software and mobile apps, including security, utilities, games, video, and audio software.">




    <meta property="og:description" content="CNET Download.com provides free downloads for Windows, Mac, iOS and Android computers and mobile devices. Every category of desktop software and mobile apps, including security, utilities, games, video, and audio software.">


    <link rel="og:url" href="http://download.cnet.com/"/>


        			<meta charset="UTF-8" />
			
						
			            
                        
            
            <meta name="viewport" content="width=device-width, initial-scale=1">
            
              
        

            <script>
            window['optimizely'] = window['optimizely'] || [];
            window['optimizely'].push(["customTag", "pageTypeName", "front_door_dl"]);
            window['optimizely'].push(["customTag", "platform", "no-platform"]);
            window['optimizely'].push(["customTag", "category", ""]);
            window['optimizely'].push(["customTag", "subcategory", ""]);
            window['optimizely'].push(["setDimensionValue", "pageTypeName", "front_door_dl"]);
        </script>

        <script src="//cdn.optimizely.com/js/4177821143.js"></script>
<script type="text/javascript">
    function getOptimizelyTestAndVariant(){if("undefined"!=typeof window["optimizely"]){var allTests=window["optimizely"].allExperiments,charCount=0,variationMap=window["optimizely"].variationMap,variationMapActive=[];for(var testId in variationMap){if(variationMap.hasOwnProperty(testId)){var map=[],mapString="",testDefined=false,testEnabled=false;testDefined=allTests.hasOwnProperty(testId);testEnabled=testDefined&&allTests[testId].hasOwnProperty("enabled");if(testEnabled){map=[].concat(variationMap[testId]).join("_");mapString=testId+":"+map;if((charCount+mapString.length)<=255){charCount+=mapString.length;variationMapActive.push(mapString)}}}}return variationMapActive.join()}else{return""}}
</script>    
                                    <!--esi
<esi:function name="getDlSegmentFromCookie">
    <esi:choose>
        <esi:when test="!$exists($(HTTP_COOKIE{'dl_ssegment'}))">
            <esi:return value="''"/>
        </esi:when>
        <esi:otherwise>
            <esi:return value="$(HTTP_COOKIE{'dl_ssegment'})"/>
        </esi:otherwise>
    </esi:choose>
</esi:function>

<esi:function name="getDeviceFromCookie">
    <esi:choose>
        <esi:when test="$exists($(HTTP_COOKIE{'dl_is_mobile_device'}))">
            <esi:return value="'mobile'"/>
        </esi:when>
        <esi:otherwise>
            <esi:return value="'desktop'"/>
        </esi:otherwise>
    </esi:choose>
</esi:function>

<esi:vars>
    <esi:assign name="dlSegment" value="$getDlSegmentFromCookie()"/>
        <esi:assign name="segmentUser" value="$segmentUser()"/>
</esi:vars>

<esi:choose>
    <esi:when test="$(dlSegment) matches '''^SEO'''">
        $add_header( 'Set-Cookie', 'dl_ssegment=' + $(dlSegment) +
         ';path=/;expires=' + $http_time($time()+1800)+ ';' +
         'domain=' + $url_encode('.cnet.com') + ';' )
    </esi:when>
</esi:choose>

<esi:function name="segmentUser">
    <esi:choose>
        <esi:when test="$(dlSegment) matches '''^SEO'''">
            <esi:return value="$(dlSegment)" />
        </esi:when>
        <esi:when test="$exists($(segmentUser))">
            <esi:return value="$(segmentUser)" />
        </esi:when>
        <esi:otherwise>
            <esi:assign name="dlPath" value="ORG"/>
                        <esi:assign name="referer_is_search" value="'n'" />
            <esi:choose>
                <esi:when test="$(HTTP_REFERER) matches '''^https?://[^/]*(google.\w+\.?\w+|g.cn|yahoo.com|bing.com|ask.com|aol.com|blekko.com|duckduckgo.com|youdao.com|sogou.com|baidu.com|yandex.com|babylon.com).*'''" >
                    <esi:assign name="referer_is_search" value="'y'" />
                </esi:when>
            </esi:choose>

            <esi:assign name="dlLanguage" value="''"/>
            <esi:choose>
                <esi:when test="$(HTTP_X_ORIGINALLANG)">
                    <esi:assign name="dlLanguage" value="'_' + $(HTTP_X_ORIGINALLANG)"/>
                </esi:when>
            </esi:choose>

                        <esi:choose>
                <esi:when test="$(referer_is_search)=='y'">
                    <esi:assign name="dlPath" value="SEO"/>
                    $add_header( 'Set-Cookie', 'dl_ssegment=' + $(dlPath) + $(dlLanguage) + ';path=/;expires=' + $http_time($time()+1800)+ ';' + 'domain=' + $url_encode('.cnet.com') + ';' )
                </esi:when>
                <esi:when test="$isButtonPartnerPage()=='true'">
                    <esi:assign name="dlPath" value="'BP'"/>
                </esi:when>
            </esi:choose>
            <esi:return value="$(dlPath) + $(dlLanguage)"/>
        </esi:otherwise>
    </esi:choose>
</esi:function>

<esi:assign name="pguid" value="$substr($digest_md5_hex($(REMOTE_ADDR) + $time() + $rand() + $(HTTP_COOKIE)), 0, 24)"/>

<esi:assign name="vguid" value="$generateVguid()"/>

<esi:assign name="deviceType" value="$getDeviceFromCookie()"/>

    <esi:function name="isButtonPartnerPage">
        <esi:assign name="partParamList" value="$(QUERY_STRING{'part'})"/>
        <esi:choose>
                        <esi:when test="$is_empty($(partParamList))">
                <esi:return value="false"/>
            </esi:when>
                        <esi:otherwise>
                <esi:choose>
                    <esi:when test="$(QUERY_STRING{'part'}) has_i 'dl-'">
                        <esi:return value="true"/>
                    </esi:when>
                </esi:choose>
