Interesting.<br><br>I am using urllib2 to open some government pages, and they have some js checking for Flash on my computer. <br><br>Is there a way to show them that I have flash? Or possibly another solution?<br><br>My code:<br>
user_agent = &#39;Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)&#39;<br>headers = {&#39;User-Agent&#39; : user_agent}<br>req = urllib2.Request(_URL, None, headers)<br>data = mechanize.urlopen(req)<br>_soup = B_S(data)<br>
<br>And what I get back from &#39;print _soup&#39;:<br>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br>&lt;html&gt;<br>&lt;head&gt;&lt;title&gt;Welcome to OurDocuments.gov&lt;/title&gt;<br>
&lt;!-- Prevent caching in netscape. Very important because netscape tends to mangle cached code --&gt;<br>&lt;meta http-equiv=&quot;expires&quot; content=&quot;0&quot; /&gt;<br>&lt;meta http-equiv=&quot;Pragma&quot; content=&quot;no-cache&quot; /&gt;<br>
&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;<br><br>&lt;!--<br><br>// moock fpi [f.lash p.layer i.nspector]<br><br>// version: 1.3.5<br><br>// written by colin moock<br><br>// code maintained at: <a href="http://www.moock.org/webdesign/flash/detection/moockfpi/">http://www.moock.org/webdesign/flash/detection/moockfpi/</a><br>
<br>// terms of use posted at: <a href="http://www.moock.org/terms/">http://www.moock.org/terms/</a><br><br><br><br>// =============================================================================<br><br>// These are the user defined globals.<br>
<br>// Modify the following variables to customize the inspection behaviour.<br><br><br><br>var requiredVersion = 6;   // Version the user needs to view site (max 6, min 2)<br><br><br><br>var useRedirect = true;    // Flag indicating whether or not to load a separate<br>
<br>                           // page based on detection results. Set to true to<br><br>                           // load a separate page.<br><br>                           <br><br>// Only set next three vars if useRedirect is true...which it is...<br>
<br>var flashPage = &quot;/doc.php?flash=true&amp;doc=2&quot;;     // The location of the flash movie page<br><br>var noFlashPage = &quot;/doc.php?flash=false&amp;doc=2&quot;;  // Page displayed if the user doesn&#39;t have the<br>
<br>                                      // plugin or we can&#39;t detect it.<br><br><br><br>var upgradePage = &quot;/doc.php?flash=old&amp;doc=2&quot;;  // Page displayed if we detect an old plugin         <br><br>// =============================================================================<br>
<br><br><br>// *************<br><br>// Everything below this point is internal until after the BODY tag.<br><br>// Do not modify! Proceed to the BODY tag for further instructions.<br><br>// *************<br><br><br><br>// System globals<br>
<br>var flash2Installed = false;    // boolean. true if flash 2 is installed<br><br>var flash3Installed = false;    // boolean. true if flash 3 is installed<br><br>var flash4Installed = false;    // boolean. true if flash 4 is installed<br>
<br>var flash5Installed = false;    // boolean. true if flash 5 is installed<br><br>var flash6Installed = false;    // boolean. true if flash 6 is installed<br><br>var maxVersion = 6;             // highest version we can actually detect<br>
<br>var actualVersion = 0;          // will become the version the user really has<br><br>var hasRightVersion = false;    // boolean. will become true if it&#39;s safe to embed the flash movie in the page<br><br>var jsVersion = 1.0;            // the version of javascript supported<br>
<br><br><br>// --&gt;<br><br>&lt;/script&gt;<br>&lt;script language=&quot;JavaScript1.1&quot; type=&quot;text/javascript&quot;&gt;<br><br>&lt;!--<br><br><br><br>// Check the browser...we&#39;re looking for ie/win<br><br>var isIE = (navigator.appVersion.indexOf(&quot;MSIE&quot;) != -1) ? true : false;    // true if we&#39;re on ie<br>
<br>var isWin = (navigator.appVersion.indexOf(&quot;Windows&quot;) != -1) ? true : false; // true if we&#39;re on windows<br><br><br><br>// This is a js1.1 code block, so make note that js1.1 is supported.<br><br>jsVersion = 1.1;<br>
<br><br><br>// Write vbscript detection on ie win. IE on Windows doesn&#39;t support regular<br><br>// JavaScript plugins array detection.<br><br>if(isIE &amp;&amp; isWin) {<br><br>  document.write(&#39;&lt;SCR&#39; + &#39;IPT LANGUAGE=VBScript\&gt; \n&#39;);<br>
<br>  document.write(&#39;on error resume next \n&#39;);<br><br>  document.write(&#39;flash2Installed = (IsObject(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash.2&quot;))) \n&#39;);<br><br>  document.write(&#39;flash3Installed = (IsObject(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash.3&quot;))) \n&#39;);<br>
<br>  document.write(&#39;flash4Installed = (IsObject(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash.4&quot;))) \n&#39;);<br><br>  document.write(&#39;flash5Installed = (IsObject(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash.5&quot;))) \n&#39;);  <br>
<br>  document.write(&#39;flash6Installed = (IsObject(CreateObject(&quot;ShockwaveFlash.ShockwaveFlash.6&quot;))) \n&#39;);  <br><br>  document.write(&#39;&lt;/scr&#39; + &#39;ipt\&gt; \n&#39;); // break up end tag so it doesn&#39;t end our script<br>
<br>}<br><br>// --&gt;<br><br>&lt;/script&gt;<br>&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;<br><br>&lt;!--<br><br>// Next comes the standard javascript detection that uses the <br><br>
// navigator.plugins array. We pack the detector into a function so it loads<br><br>// before we call it.<br><br><br><br>function detectFlash() {  <br><br>  // If navigator.plugins exists...<br><br>  if (navigator.plugins) {<br>
<br>    // ...then check for flash 2 or flash 3+.<br><br>    if (navigator.plugins[&quot;Shockwave Flash 2.0&quot;] || navigator.plugins[&quot;Shockwave Flash&quot;]) {<br><br><br><br>      // Some version of Flash was found. Time to figure out which.<br>
<br>      <br><br>      // Set convenient references to flash 2 and the plugin description.<br><br>      var isVersion2 = navigator.plugins[&quot;Shockwave Flash 2.0&quot;] ? &quot; 2.0&quot; : &quot;&quot;;<br><br>      var flashDescription = navigator.plugins[&quot;Shockwave Flash&quot; + isVersion2].description;<br>
<br><br><br>      // DEBUGGING: uncomment next line to see the actual description.<br><br>      // alert(&quot;Flash plugin description: &quot; + flashDescription);<br><br>      <br><br>      // A flash plugin-description looks like this: Shockwave Flash 4.0 r5<br>
<br>      // We can get the major version by grabbing the character before the period<br><br>      // note that we don&#39;t bother with minor version detection here (since we don&#39;t need to, and it is best accomplished from within an actual Flash movie anyway). <br>
<br>      var flashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(&quot;.&quot;) - 1));<br><br><br><br>// wow this is old now.  to accomodate flash players 10 (!!) and higher, following code was added.  d.cole. 3/2010<br>
<br>      var flashVersion2 = parseInt(flashDescription.charAt(flashDescription.indexOf(&quot;.&quot;) - 2));     <br><br><br><br>    // We found the version, now set appropriate version flags. Make sure<br><br>      // to use &gt;= on the highest version so we don&#39;t prevent future version<br>
<br>      // users from entering the site.<br><br>      flash2Installed = flashVersion == 2;    <br><br>      flash3Installed = flashVersion == 3;<br><br>      flash4Installed = flashVersion == 4;<br><br>      flash5Installed = flashVersion == 5;<br>
<br>      flash6Installed = flashVersion &gt;= 6;<br><br>// wow this is old now.  to accomodate flash players 10 (!!) and higher, following code was added.  d.cole. 3/2010<br><br>      flash6Installed = flashVersion2 &gt;= 1;<br>
<br>}<br><br>  }<br><br>  <br><br>  // Loop through all versions we&#39;re checking, and<br><br>  // set actualVersion to highest detected version.<br><br>  for (var i = 2; i &lt;= maxVersion; i++) {  <br><br>    if (eval(&quot;flash&quot; + i + &quot;Installed&quot;) == true) {<br>
<br>        actualVersion = i;<br><br>    }<br><br>  }<br><br>  <br><br>  if (!actualVersion) {<br><br>      actualVersion = 0;    <br><br>  }<br><br>  <br><br>  // If we&#39;re on webtv, the version supported is 2 (pre-summer2000, <br>
<br>  // or 3, post-summer2000). Note that we don&#39;t bother sniffing varieties<br><br>  // of webtv. You could if you were sadistic...<br><br>  if(navigator.userAgent.indexOf(&quot;WebTV&quot;) != -1) actualVersion = 3;  <br>
<br>  <br><br>  // DEBUGGING: uncomment next line to display flash version<br><br>  //alert(&quot;version detected: &quot; + actualVersion);<br><br><br><br>  // We&#39;re finished getting the version on all browsers that support detection.<br>
<br>  // Time to take the appropriate action.<br><br><br><br>  // If the user has a new enough version...<br><br>  if (actualVersion &gt;= requiredVersion) {<br><br>    // ...then we&#39;ll redirect them to the flash page, unless we&#39;ve<br>
<br>    // been told not to redirect.<br><br>    if (useRedirect) {<br><br>      // Need javascript1.1 to do location.replace<br><br>      if(jsVersion &gt; 1.0) {<br><br>        // It&#39;s safe to use replace(). Good...we won&#39;t break the back button.<br>
<br>        window.location.replace(flashPage);  <br><br>      } else {<br><br>        // JavaScript version is too old, so use .location to load the flash page.<br><br>        window.location = flashPage;<br><br>      }<br>
<br>    }<br><br>    <br><br>    // If we got here, we didn&#39;t redirect. So we make a note that we should<br><br>    // write out the object/embed tags later.<br><br>    hasRightVersion = true;                <br><br>  } else {  <br>
<br>    // The user doesn&#39;t have a new enough version.<br><br>    // If the redirection option is on, load the appropriate alternate page.<br><br>    if (useRedirect) {<br><br>      // Do the same .replace() call only if js1.1+ is available.<br>
<br>      if(jsVersion &gt; 1.0) {<br><br>        window.location.replace((actualVersion &gt;= 2) ? upgradePage : noFlashPage);<br><br>      } else {<br><br>        window.location = (actualVersion &gt;= 2) ? upgradePage : noFlashPage;<br>
<br>      }<br><br>    }<br><br>  }<br><br>}<br><br><br><br>detectFlash();  // call our detector function now that it&#39;s safely loaded.  <br><br>  <br><br>// --&gt;<br><br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body bgcolor=&quot;#FFFFFF&quot; onload=&quot;detectFlash();&quot;&gt;<br>
&lt;p&gt;One moment please...&lt;/p&gt;<br>&lt;noscript&gt;<br>&lt;meta http-equiv=&quot;Refresh&quot; content=&quot;4;URL=/doc.php?flash=false&amp;amp;doc=2&quot; /&gt;<br>&lt;/noscript&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>
<div style="visibility: hidden; display: inline;" id="avg_ls_inline_popup"></div><style type="text/css">#avg_ls_inline_popup {  position:absolute;  z-index:9999;  padding: 0px 0px;  margin-left: 0px;  margin-top: 0px;  width: 240px;  overflow: hidden;  word-wrap: break-word;  color: black;  font-size: 10px;  text-align: left;  line-height: 13px;}</style>