<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le Blog du grand loup Zeur &#187; bot</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/bot/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Pourrir des votes avec bash et wget</title>
		<link>http://blog.gaetan-grigis.eu/systeme/pourrir-des-votes-avec-bash-et-wget/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/pourrir-des-votes-avec-bash-et-wget/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 19:50:29 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Système]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1010</guid>
		<description><![CDATA[plop à tous &#8230; encore un script super useless (comme d&#8217;hab). L&#8217;utilité du script est de bourriner une url de vote pour plomber ou augmenter des stats (le site avait une vérification par ip, donc il fallait utiliser des proxy). Connaissant samair.ru(mon fournisseur de proxy), mon script ne fonctionnera qu&#8217;une semaine ou deux, mais comme [...]]]></description>
			<content:encoded><![CDATA[<p>plop à tous &#8230; encore un script super useless (comme d&#8217;hab).</p>
<p>L&#8217;utilité du script est de bourriner une url de vote pour plomber ou augmenter des stats (le site avait une vérification par ip, donc il fallait utiliser des proxy).<br />
Connaissant samair.ru(mon fournisseur de proxy), mon script ne fonctionnera qu&#8217;une semaine ou deux, mais comme je fait appel à pas mal de trucs intéressant dans ce script, je le partage, donc c&#8217;est juste informationnel et non pas fonctionnel. </p>
<p>Je rappel que l&#8217;utilisation de mon script n&#8217;engage que vous &#8230; vous êtes seul responsable en cas d&#8217;effet de bord, ou de dégâts causé par l&#8217;utilisation de se script &#8230; (j&#8217;ai quand même mis un sleep histoire de ne pas trop surcharger le serveur &#8230;).</p>
<p><span id="more-1010"></span></p>
<p>Le fonctionnement du script :</p>
<ul>
<li>mettre à jour sa liste de proxy (chez samair.ru &#8230; malgrès leur système anti-bot ^^).</li>
<li>nettoyer la liste des proxy en &laquo;&nbsp;décodant&nbsp;&raquo; leurs ports (le système de sécurité de samair.ru contre les bots)</li>
<li>boucler sur les proxy en tapant une url fournit en parametre du script</li>
</ul>
<p>Et sans plus attendre le script :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">UA=</span><span class="st0">&quot;Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">LETTER=</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">NUMBER=</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> updateProxy<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">wget</span> http:<span class="sy0">//</span>www.samair.ru<span class="sy0">/</span>proxy<span class="sy0">/</span>time<span class="nu0">-01</span>.htm</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; getvariable</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">cat</span> time<span class="nu0">-01</span>.htm<span class="sy0">|</span>perl -ne <span class="st0">&#39;while(m/&lt;td&gt;([0-9]+.[0-9]+.[0-9]+.[0-9]+)[^+]+([^<span class="es0">\)</span>]+)/g){print &quot;$1:$2<span class="es0">\n</span>&quot;;}&#39;</span><span class="sy0">|</span>tr -s <span class="re1">$LETTER</span> <span class="re1">$NUMBER</span><span class="sy0">|</span>sed <span class="st0">&quot;s/+//g&quot;</span> <span class="sy0">&gt;</span> proxy</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> getvariable<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">LETTER=</span>`<span class="kw2">cat</span> time<span class="nu0">-01</span>.htm<span class="sy0">|</span>perl -ne <span class="st0">&#39;while(m/([a-z])=([0-9]);/g){print &quot;$1&quot;;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">NUMBER=</span>`<span class="kw2">cat</span> time<span class="nu0">-01</span>.htm<span class="sy0">|</span>perl -ne <span class="st0">&#39;while(m/([a-z])=([0-9]);/g){print &quot;$2&quot;;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> plombe<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> proxy <span class="kw1">in</span> `<span class="kw2">cat</span> proxy`</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">export</span> <span class="re2">http_proxy=</span><span class="re1">$proxy</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Using proxy : $proxy&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">wget</span> &#8211;spider &#8211;user-<span class="re2">agent=</span><span class="st0">&quot;$UA&quot;</span> &#8211;no-cookies -T30 -t1 <span class="st0">&quot;$1&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> &nbsp;$<span class="br0">&#40;</span><span class="br0">&#40;</span>RANDOM<span class="sy0">%</span><span class="nu0">10</span><span class="nu0">+10</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">export</span> <span class="re2">http_proxy=</span><span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> -z <span class="st0">&quot;$1&quot;</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;$0 need an url as parameter&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; updateProxy</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; plombe <span class="st0">&quot;$1&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">rm</span> time<span class="nu0">-01</span>.htm</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
</ol>
</div>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1010">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/gresillement-du-driver-em28xx-et-kernel-2-6-28-sur-ubuntu-9-04/" rel="bookmark" title="Permanent Link: Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04">Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/" rel="bookmark" title="Permanent Link: Android C2DM Notification push en bash avec wget">Android C2DM Notification push en bash avec wget</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/telecharger-sur-mu-via-bash/" rel="bookmark" title="Permanent Link: Telecharger sur MU via bash">Telecharger sur MU via bash</a></li><li><a href="http://blog.gaetan-grigis.eu/android/compiler-cyanogen-android-froyo-sur-ubuntu/" rel="bookmark" title="Permanent Link: Compiler Cyanogen (android froyo) sur Ubuntu">Compiler Cyanogen (android froyo) sur Ubuntu</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/pourrir-des-votes-avec-bash-et-wget/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mon apprentissage de python avec Ogame ^^</title>
		<link>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 18:58:51 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[ogame]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=630</guid>
		<description><![CDATA[The kikoolol strike back !! Mon deuxième billets de la soirée &#8230;pour pas grand chose en fait. J&#8217;ai voulu apprendre le langage python de façon plutôt ludique en créant un bot qui créer des batiments en boucle pour Ogame &#8230; rien d&#8217;illégal bien entendu ^^. Dans le code Python qui va suivre, vous pourrez comprendre [...]]]></description>
			<content:encoded><![CDATA[<p>The kikoolol strike back !! Mon deuxième billets de la soirée &#8230;pour pas grand chose en fait.</p>
<p>J&#8217;ai voulu apprendre le langage python de façon plutôt ludique en créant un bot qui créer des batiments en boucle pour Ogame &#8230; rien d&#8217;illégal bien entendu ^^.<br />
Dans le code Python qui va suivre, vous pourrez comprendre (ou pas) comment fonctionne :</p>
<ul>
<li>Les requêtes HTTP en python avec des headers à partir de zéro</li>
<li>Les Threads pour les opérations en parallèle</li>
<li>Les Semaphores, pour éviter des requêtes en parallèle (pas apprécié par Ogame dans certain cas)</li>
</ul>
<p>Pour l&#8217;utiliser, il suffit ensuite d&#8217;ajouter au source qui vont suivre : </p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1">og = Ogame<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">og.<span class="me1">setSessionCookie</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie phpsessid de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie prssess de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le contenu du cookie loginC de votre univers&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;le parametre de l&#39;url &amp;session=&#8230;&quot;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;uniXX.ogame.fr&quot;</span>votre<span class="co1">#univers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">Farmer.<span class="me1">buildInChainsPlanets</span><span class="br0">&#40;</span>og,<span class="br0">&#91;</span><span class="st0">&quot;id planete&quot;</span>,<span class="st0">&quot;id planete&quot;</span><span class="br0">&#93;</span>,<span class="br0">&#91;</span><span class="br0">&#91;</span><span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#93;</span>,<span class="br0">&#91;</span><span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span>,<span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>le premier paramètre de buildInChainsPlanets est l&#8217;objet og<br />
le second est un tableau de string contenant l&#8217;id des planètes à &laquo;&nbsp;farmer&nbsp;&raquo;<br />
le troisième est un tableau de tableau contenant les séquences des batiments à construire :<br />
1 pour le metal 2 pour le cristal 3 pour le deuterium 4 pour l&#8217;electricite.</p>
<p>Et voilà &#8230; lorsque vous aurez conquis une planète rajoutez-là au tableau ainsi que la séquence de batiments que vous voulez, puis laissez tourner le script plusieurs jours (faite gaffe avec les sessions qui risque de changer si vous vous reconnectez avec votre navigateur).<br />
<span id="more-630"></span></p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># -*- coding:Utf-8 -*-</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">threading</span> <span class="kw1">import</span> Thread</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">threading</span> <span class="kw1">import</span> Semaphore</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">random</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">httplib</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">time</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Ogame:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">userAgent</span> = <span class="st0">&quot;Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.3a1pre) Gecko/20091021 Ubuntu/9.10 (karmic) Minefield/3.7a1pre&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">login</span> &nbsp; &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">password</span> &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">PHPSessId</span> = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">prSess</span> &nbsp; &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">loginString</span>= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">session</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">urlGame</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">univers</span> &nbsp; = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">cookie</span> &nbsp; &nbsp;= <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">referer</span> = <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> setSessionCookie<span class="br0">&#40;</span><span class="kw2">self</span>,sessid=<span class="st0">&quot;&quot;</span>,prsess=<span class="st0">&quot;&quot;</span>,loginString=<span class="st0">&quot;&quot;</span>,session=<span class="st0">&quot;&quot;</span>,univers=<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">PHPSessId</span> = sessid</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">prSess</span> &nbsp; &nbsp;= prsess</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">loginString</span>= loginString</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">session</span> &nbsp; = session</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">urlGame</span> &nbsp; = <span class="st0">&quot;/game/index.php?page=overview&amp;session=&quot;</span>+session</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">univers</span> &nbsp; = univers</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">cookie</span> &nbsp; &nbsp;= <span class="st0">&quot;PHPSESSID=&quot;</span>+<span class="kw2">self</span>.<span class="me1">PHPSessId</span>+<span class="st0">&quot;;prsess_165647=&quot;</span>+<span class="kw2">self</span>.<span class="me1">prSess</span>+<span class="st0">&quot;;login_165647=&quot;</span>+<span class="kw2">self</span>.<span class="me1">loginString</span>+<span class="st0">&quot;;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">referer</span> = <span class="st0">&quot;http://&quot;</span>+<span class="kw2">self</span>.<span class="me1">univers</span>+<span class="kw2">self</span>.<span class="me1">urlGame</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getPlanetResource<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; op = OgamePlanet<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> op.<span class="me1">getResource</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> planetAddBuilding<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span>,batiment<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; op = OgamePlanet<span class="br0">&#40;</span><span class="kw2">self</span>,<span class="kw2">id</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> op.<span class="me1">addBuilding</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> OgamePlanet:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,ogame,<span class="kw2">id</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">planetId</span>=<span class="kw2">id</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>=ogame</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">res</span>=<span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getPlanets<span class="br0">&#40;</span>ogame<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span>ogame.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,ogame.<span class="me1">urlGame</span>,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span> <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> game.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">select</span>=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;select[^&gt;]*&gt;([<span class="es0">\w</span><span class="es0">\W</span><span class="es0">\n</span><span class="es0">\t</span><span class="es0">\r</span>]*)&lt;/select&gt;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; res=<span class="kw3">re</span>.<span class="me1">findall</span><span class="br0">&#40;</span><span class="st0">&quot;&amp;cp=([^&amp;]*)&amp;[^&gt;]*&gt;([^&lt;]*)&lt;.*<span class="es0">\[</span>([^<span class="es0">\]</span>]*)<span class="es0">\]</span>&quot;</span>,<span class="kw3">select</span>.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> res</div>
</li>
<li class="li1">
<div class="de1">&nbsp;getPlanets = <span class="kw2">staticmethod</span><span class="br0">&#40;</span>getPlanets<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> getResource<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; reque=<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">urlGame</span>+<span class="st0">&quot;&amp;cp=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span>+<span class="st0">&quot;&amp;mode=&amp;gid=&amp;messageziel=&amp;re=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,reque,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span>=reque</div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; table=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;table class=&#39;header&#39; id=&#39;resources&#39;[^&gt;]*&gt;([<span class="es0">\w</span><span class="es0">\W</span><span class="es0">\n</span><span class="es0">\t</span><span class="es0">\r</span>]*?)&lt;/table&gt;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; res=<span class="kw3">re</span>.<span class="me1">findall</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;font[^&gt;]*&gt;([.0-9]*)&lt;/font&gt;&quot;</span>,table.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">res</span>=res</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> res</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#1 metal 2 cristal 3 deuterium 4 electricite</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> addBuilding<span class="br0">&#40;</span><span class="kw2">self</span>, batiment<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht = <span class="kw3">httplib</span>.<span class="me1">HTTPConnection</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">univers</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; url = <span class="st0">&quot;/game/index.php?page=b_building&amp;session=&quot;</span>+<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">session</span>+<span class="st0">&quot;&amp;cp=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span>+<span class="st0">&quot;&amp;mode=&amp;gid=&amp;messageziel=&amp;re=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,url,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data = rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; link=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;modus=add&amp;techid=&quot;</span>+batiment,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="kw2">str</span><span class="br0">&#40;</span>link<span class="br0">&#41;</span> == <span class="st0">&quot;None&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ti=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;pp=&#39;([0-9]+)&#39;;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw2">str</span><span class="br0">&#40;</span>ti<span class="br0">&#41;</span><span class="sy0">!</span>=<span class="st0">&quot;None&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tps = ti.<span class="me1">groups</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> &#8211; <span class="kw2">int</span><span class="br0">&#40;</span>tps<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="co1">#just to say that another things is being constructed Need to change farmer</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-3</span><span class="co1">#Don&#39;t get the url to create building</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">1</span>,<span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; reque=<span class="st0">&quot;/game/index.php?page=b_building&amp;session=&quot;</span>+<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">session</span>+<span class="st0">&quot;&amp;modus=add&amp;techid=&quot;</span>+batiment+<span class="st0">&quot;&amp;planet=&quot;</span>+<span class="kw2">self</span>.<span class="me1">planetId</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">request</span><span class="br0">&#40;</span><span class="st0">&quot;GET&quot;</span>,reque,<span class="br0">&#123;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;Cookie&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">cookie</span>,<span class="st0">&quot;User-Agent&quot;</span>:<span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">userAgent</span>,<span class="st0">&quot;Referer&quot;</span>:url<span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">ogame</span>.<span class="me1">referer</span>=reque</div>
</li>
<li class="li1">
<div class="de1">&nbsp; rq=ht.<span class="me1">getresponse</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; data=rq.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ht.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; link=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;modus=add&amp;techid=&quot;</span>+batiment,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="kw2">str</span><span class="br0">&#40;</span>link<span class="br0">&#41;</span> == <span class="st0">&quot;None&quot;</span>:<span class="co1">#no link so it&#39;s OK</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;ti=<span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;pp=&#39;([0-9]+)&#39;;&quot;</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw2">str</span><span class="br0">&#40;</span>ti<span class="br0">&#41;</span><span class="sy0">!</span>=<span class="st0">&quot;None&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; tps = ti.<span class="me1">groups</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> tps<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-2</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#Farming function &#8230;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> Farmer<span class="br0">&#40;</span>Thread<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,og,planet,batiments<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; Thread.<span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">og</span> = og</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">planet</span> = planet</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">batiments</span> = batiments</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> run<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> batiment <span class="kw1">in</span> <span class="kw2">self</span>.<span class="me1">batiments</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">self</span>.<span class="me1">sec</span>=<span class="nu0">-1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;On contruit un batiment : &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span>+<span class="st0">&quot; sur : &quot;</span>+<span class="kw2">self</span>.<span class="me1">planet</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">0</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">sec</span> = <span class="kw2">self</span>.<span class="me1">og</span>.<span class="me1">planetAddBuilding</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">planet</span>,<span class="kw2">str</span><span class="br0">&#40;</span>batiment<span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">0</span> <span class="kw1">and</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&gt;</span><span class="nu0">-4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;addTime=<span class="nu0">360</span> + <span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">10</span>,<span class="nu0">120</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;Ajout d&#39;un temps additionnel de &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>addTime<span class="br0">&#41;</span>+<span class="st0">&quot; sec(s) avant le prochain batiment&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span>addTime<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">elif</span> <span class="kw2">self</span>.<span class="me1">sec</span><span class="sy0">&lt;</span><span class="nu0">-4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;Un batiment est déjà en construction pour encore &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span>-<span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span>+<span class="st0">&quot; sec(s)&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span>-<span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;On va attendre &quot;</span>+<span class="kw2">str</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span>+<span class="st0">&quot; secondes avant le prochain batiment&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw2">float</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">sec</span><span class="br0">&#41;</span><span class="nu0">+2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">def</span> buildInChainsPlanets<span class="br0">&#40;</span>og,planets,batiments<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">list</span>=<span class="br0">&#91;</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">#maxCon = 1 default 1 ^^</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; pool_sema = Semaphore<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> index,planet <span class="kw1">in</span> <span class="kw2">enumerate</span><span class="br0">&#40;</span>planets<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;pool_sema.<span class="me1">acquire</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;tmp = Farmer<span class="br0">&#40;</span>og,planet,batiments<span class="br0">&#91;</span>index<span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">list</span>.<span class="me1">append</span><span class="br0">&#40;</span>tmp<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;tmp.<span class="me1">start</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw3">time</span>.<span class="me1">sleep</span><span class="br0">&#40;</span><span class="kw3">random</span>.<span class="me1">randint</span><span class="br0">&#40;</span><span class="nu0">2</span>,<span class="nu0">5</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;pool_sema.<span class="me1">release</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> l <span class="kw1">in</span> <span class="kw2">list</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;l.<span class="me1">join</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;buildInChainsPlanets = <span class="kw2">staticmethod</span><span class="br0">&#40;</span>buildInChainsPlanets<span class="br0">&#41;</span></div>
</li>
</ol>
</div>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=630">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/liveusb-fedora9-avec-liveusb-creator/" rel="bookmark" title="Permanent Link: LiveUsb fedora9 avec liveusb creator">LiveUsb fedora9 avec liveusb creator</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/" rel="bookmark" title="Permanent Link: monter un serveur PHP en une ligne de commande (ou presque)">monter un serveur PHP en une ligne de commande (ou presque)</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/scapy-pour-forger-des-paquets-en-python/" rel="bookmark" title="Permanent Link: Scapy pour forger des paquets en python">Scapy pour forger des paquets en python</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/creer-son-propre-service-de-mail-jetable-avec-appengine/" rel="bookmark" title="Permanent Link: Créer son propre service de mail jetable avec appengine">Créer son propre service de mail jetable avec appengine</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/mon-apprentissage-de-python-avec-ogame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exemple de Bot d&#8217;Authentification et de clic en Php</title>
		<link>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 10:14:42 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[clic]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=602</guid>
		<description><![CDATA[Bonjour à tous &#8230; Aujourd&#8217;hui ze bot &#171;&#160;cliqueur&#160;&#187; ^^, il s&#8217;agit en fait d&#8217;un bot qui s&#8217;authentifie en POST, récupère le cookie et va en get sur un lien (le clic quoi). A quoi ça peut bien servir ? Pour ma part, c&#8217;était pour récupérer une clé pour la closed beta de HON (un Dota [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour à tous &#8230;</p>
<p>Aujourd&#8217;hui ze bot &laquo;&nbsp;cliqueur&nbsp;&raquo; ^^, il s&#8217;agit en fait d&#8217;un bot qui s&#8217;authentifie en POST, récupère le cookie et va en get sur un lien (le clic quoi).</p>
<p>A quoi ça peut bien servir ?</p>
<p>Pour ma part, c&#8217;était pour récupérer une clé pour la closed beta de HON (un Dota avec des binaires pour linux, fallait pas rater ça!!) sur le site de Alienware, le problème, c&#8217;est que les clés étaient censé être disponible soit très tard dans la soirée, soit très tôt dans la matinée, et comme je n&#8217;aimais pas l&#8217;idée de rester sur le site à poireauter, j&#8217;ai fait ce que tout programmeurs auraient fait ^^, un sympatique script &#8230;</p>
<p>Les actions à faire étaient :</p>
<ol>
<li>Regarder sur le site si le nombre de clés disponibles étaient supérieur à 0</li>
<li>S&#8217;authentifier</li>
<li>Récupérer les clés</li>
</ol>
<p>Ce qui donne donc le script suivant en tâche Cron toutes les 5 minutes (fallait juste pas oublier de couper le script après réception des clés ^^) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;USERNAME&quot;</span><span class="sy0">,</span><span class="st0">&quot;login&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;PASSWORD&quot;</span><span class="sy0">,</span><span class="st0">&quot;pass&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;MAILADRES&quot;</span><span class="sy0">,</span><span class="st0">&quot;mail@mail.com&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$stringLoginPost</span><span class="sy0">=</span><span class="st0">&quot;username=&quot;</span><span class="sy0">.</span>USERNAME<span class="sy0">.</span><span class="st0">&quot;&amp;password=&quot;</span><span class="sy0">.</span>PASSWORD<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/***********************************************DO NOT TOUCH**************************************************/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$hon</span> <span class="sy0">=</span> <span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="st0">&quot;http://www.alienwarearena.com/event/hon-beta-giveaway/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&#39;|&lt;h3[^&gt;]*&gt;Closed Beta Keys Remaining&lt;/h3&gt;[<span class="es0">\W</span><span class="es0">\w</span>]*&lt;h1[^&gt;]*&gt;([0-9]+)&lt;/h1&gt;|iU&#39;</span><span class="sy0">,</span><span class="re1">$hon</span><span class="sy0">,</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$socket</span> <span class="sy0">=</span> <span class="kw3">socket_create</span><span class="br0">&#40;</span>AF_INET<span class="sy0">,</span> SOCK_STREAM<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&quot;Could not create socket<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">socket_connect</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;www.alienwarearena.com&quot;</span><span class="sy0">,</span><span class="st0">&quot;80&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//La requete de post pour ce logger</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span> <span class="sy0">=</span> <span class="st0">&quot;POST /cmd/account/login/ HTTP/1.1<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Host: www.alienwarearena.com<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Connection: Keep-Alive<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><span class="co1">//comme ça on se reconnecte direct <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Pipelinning ROXX!!</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Content-type: application/x-www-form-urlencoded<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Content-Length: &quot;</span><span class="sy0">.</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$stringLoginPost</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="re1">$stringLoginPost</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$postReq</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//la récupération de la valeur du cookie</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#Set-Cookie: PHPSESSID=([^;]*); path=/#&quot;</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="re1">$tabRet</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//On va à la page de récupération des clés ^^</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span> <span class="sy0">=</span> <span class="st0">&quot;GET /cmd/account/get-beta-key/hon/ HTTP/1.1<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Host: www.alienwarearena.com<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Cookie: PHPSESSID=&quot;</span><span class="sy0">.</span><span class="re1">$tabRet</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Connection: Close<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$getReq</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">mail</span><span class="br0">&#40;</span>MAILADRES<span class="sy0">,</span><span class="st0">&quot;HON KEY!!&quot;</span><span class="sy0">,</span><span class="st0">&quot;You got an HON KEY : &quot;</span><span class="sy0">.</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">socket_close</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Donc voilà &#8230; le script reste une idée (qui a fonctionné dans mon cas) à modifier selon les cas, avec curl ça aurait été plus court, mais faire mumuse avec les sockets ça n&#8217;a pas de prix &#8230;</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=602">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/cpp/netbeans6-et-auto-completion-qt4/" rel="bookmark" title="Permanent Link: Netbeans6 et auto-complétion QT4">Netbeans6 et auto-complétion QT4</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/wifi-ou-3g-tethering-sur-cyanogenmod-via-bluetooth-ou-usb/" rel="bookmark" title="Permanent Link: Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB">Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/php-eviter-les-injections-tout-en-preservant-lintegrite-des-donnees/" rel="bookmark" title="Permanent Link: Php: éviter les injections tout en préservant l&#8217;intégrité des données">Php: éviter les injections tout en préservant l&#8217;intégrité des données</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/gerer-ses-routes-ip-pour-ses-vpn-via-networkmanager-et-route/" rel="bookmark" title="Permanent Link: Gérer ses routes IP pour ses VPN (via NetworkManager et route)">Gérer ses routes IP pour ses VPN (via NetworkManager et route)</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

