<?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>juust ~ php oddities &#187; php</title>
	<atom:link href="http://www.juust.org/index.php/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juust.org</link>
	<description>Link theory and search engine optimization</description>
	<lastBuildDate>Thu, 19 Jan 2012 09:39:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>google suggest scraper (php &amp; simplexml)</title>
		<link>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/</link>
		<comments>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 00:08:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scrape]]></category>
		<category><![CDATA[simplexml]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=1834</guid>
		<description><![CDATA[Today&#8217;s goal is a basic php Google Suggest scraper because I wanted traffic data and keywords for free. Before we start : google scraping is bad ! Good People use the Google Adwords API : 25 cents for 1000 units, &#8230; <a href="http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s goal is a basic php Google Suggest scraper because I wanted traffic data and keywords for free.</p>
<p>Before we start :</p>
<h2 style="text-align: center;">google scraping is <strong>bad</strong> !</h2>
<p>Good People use the <a title="google adwords api" href="http://code.google.com/apis/adwords/">Google Adwords API</a> : 25 cents for 1000 units, 15++ units for keyword suggestion so they pay 4 or 5 dollar for 1000 keyword suggestions (if they can find a good programmer which also costs a few dollars). Or they opt for <a title="search engine marketing data" href="http://www.semrush.com" rel="nofollow">SemRush</a> (also my preference), <a href="http://www.keywordspy.com" rel="nofollow">KeywordSpy</a>, <a href="http://www.spyfu.com" rel="nofollow">Spyfu</a>, and other services like 7Search PPC programs to get keyword and traffic data and data on their competitors but these also charge about 80 dollars per month for a limited account up to a few hundred per month for seo companies. Good people pay plenty.</p>
<p>We tiny grey webmice of marketing however just want a few estimates, at low or better no cost : like this :</p>
<table width="276" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="206" />
<col width="70" /> </colgroup>
<tbody>
<tr>
<td width="206" height="20">data</td>
<td align="right" width="70">num queries</td>
</tr>
<tr>
<td width="206" height="20">google suggest</td>
<td align="right" width="70">57800000</td>
</tr>
<tr>
<td height="20">google suggestion box</td>
<td align="right">5390000</td>
</tr>
<tr>
<td height="20">google suggest api</td>
<td align="right">5030000</td>
</tr>
<tr>
<td height="20">google suggestion tool</td>
<td align="right">3670000</td>
</tr>
<tr>
<td height="20">google suggest a site</td>
<td align="right">72700000</td>
</tr>
<tr>
<td height="20">google suggested users</td>
<td align="right">57000000</td>
</tr>
<tr>
<td height="20">google suggestions funny</td>
<td align="right">37400000</td>
</tr>
<tr>
<td height="20"><strong>google suggest scraper</strong></td>
<td align="right">62800</td>
</tr>
<tr>
<td height="20">google suggestions not working</td>
<td align="right">87100000</td>
</tr>
<tr>
<td height="20">google suggested user list</td>
<td align="right">254000000</td>
</tr>
</tbody>
</table>
<p>Suggestion autocomplete is AJAX, it outputs XML :</p>
<pre>&lt; ?xml version="1.0"? &gt;
   &lt;toplevel&gt;
     &lt;CompleteSuggestion&gt;
       &lt;suggestion data="senior quotes"/&gt;
       &lt;num_queries int="30000000"/&gt;
     &lt;/CompleteSuggestion&gt;
     &lt;CompleteSuggestion&gt;
       &lt;suggestion data="senior skip day lyrics"/&gt;
       &lt;num_queries int="441000"/&gt;
     &lt;/CompleteSuggestion&gt;
   &lt;/toplevel&gt;</pre>
<p>Using SimpleXML, the PHP routine is as simple as querying <strong><em>g00gle.c0m/complete/search?</em></strong>, grabbing the autocomplete xml, and extracting the attribute data :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;QUERY_STRING&#39;</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="st0">&#39;&#39;</span><span class="br0">&#41;</span> <span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&#39;enter a query like http://host/filename.php?query&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$contentstring</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="st0">&quot;http://g00gle.c0m/complete/search?output=toolbar&amp;amp;q=&quot;</span><span class="sy0">.</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$kw</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$content</span> <span class="sy0">=</span> simplexml_load_string<span class="br0">&#40;</span><span class="re1">$contentstring</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; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$content</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>CompleteSuggestion <span class="kw1">as</span> <span class="re1">$c</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$term</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$c</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>suggestion<span class="sy0">-&amp;</span>gt<span class="sy0">;</span>attributes<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>data<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//note : traffic data is sometimes missing &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$traffic</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$c</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>num_queries<span class="sy0">-&amp;</span>gt<span class="sy0">;</span>attributes<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&amp;</span>gt<span class="sy0">;</span>int<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$term</span><span class="sy0">.</span> <span class="st0">&quot; &quot;</span><span class="sy0">.</span><span class="re1">$traffic</span> <span class="sy0">.</span> <span class="st0">&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&quot;</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I made a quick php script that outputs the terms as a list of new queries so you can walk through the suggestions :</p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool.jpg" rel="shadowbox[post-1834];player=img;"><img class="alignnone size-medium wp-image-1835" title="google suggest scraper tool" src="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-300x289.jpg" alt="" width="529" height="400" /></a></p>
<p><a href="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-II1.jpg" rel="shadowbox[post-1834];player=img;"><img class="alignnone size-medium wp-image-1837" title="google suggest scraper tool II" src="http://www.juust.org/wp-content/uploads/2011/12/google-suggest-scraper-tool-II1-300x286.jpg" alt="" width="462" height="440" /></a></p>
<p>The source is as text file up for <a title="google suggest scraper tool code" href="http://www.juust.org/suggestit.txt">download overhere</a> (rename it to suggestit.php and it should run on any server with php5.* and simplexml).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-suggest-scraper-php-simplexml/2011/12/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>bing api with php and simplexml</title>
		<link>http://www.juust.org/index.php/bing-api-with-php-simplexml/2009/09/</link>
		<comments>http://www.juust.org/index.php/bing-api-with-php-simplexml/2009/09/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 15:22:17 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[bing]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=861</guid>
		<description><![CDATA[About scraping results off of Bing : Bing use a set of about eight cookies. You can grab 200 results with php curl, as 20 pages of 10, but after the first 200 the Bing server checks for the cookie &#8230; <a href="http://www.juust.org/index.php/bing-api-with-php-simplexml/2009/09/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>About scraping results off of Bing : Bing use a set of about eight cookies. You can grab 200 results with php curl, as 20 pages of 10, but after the first 200 the Bing server checks for the cookie and for lack of one returns a blank page. I can fidget with the curl cookiejar, but Bing also offer a straighforward API.</em></p>
<p>Using the <a href="http://www.bing.com/developers/default.aspx" rel="nofollow" title="where you can get your bing api v2 appid">Bing API</a> to list search results is easier. </p>
<h3>Bing TOS : not for seo rank checks</h3>
<p>In the last paragraph of the <a href="http://www.bing.com/developers/s/API%20Basics.pdf" rel="nofollow">api guide</a>, Bing give a quick recap of their TOS, you can do max 7 queries per second, and using the results for SEO rank checks is explicitly prohibited. </p>
<p>These following snippets (<a href="http://www.juust.org/bingapi.txt" rel="nofollow">text source</a>) are hence <strong>explicitly not</strong> to be used for bing search engine result page (&#8216;serp&#8217;) rank checks. </p>
<h3>bing api with simplexml</h3>
<p>So here is one for web results using php simplexml. The web api (which uses namespaces) allows for retrieving max 1000 results per term at max 50 results per query, you can specify the number of results and the offset, where to start grabbing results.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$Appid</span><span class="sy0">=</span><span class="st0">&quot;A_VERY_LONG_STRING&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Query</span> <span class="sy0">=</span> <span class="st0">&quot;seo rank check&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Numres</span> <span class="sy0">=</span> <span class="nu0">50</span><span class="sy0">;</span> <span class="co1">//max 50</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Offset</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> &nbsp; &nbsp;<span class="co1">//up to 1000</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">=</span> <span class="st0">&#39;http://api.search.live.net/xml.aspx?</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Appid=&#39;</span><span class="sy0">.</span><span class="re1">$Appid</span><span class="sy0">.</span><span class="st0">&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&amp;query=&#39;</span><span class="sy0">.</span><span class="re1">$Query</span><span class="sy0">.</span><span class="st0">&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&amp;sources=web</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&amp;web.count=&#39;</span><span class="sy0">.</span><span class="re1">$Numres</span><span class="sy0">.</span><span class="st0">&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&amp;web.offset=&#39;</span><span class="sy0">.</span><span class="re1">$Offset</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$feed</span> <span class="sy0">=</span> simplexml_load_file<span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//use the web: namespace</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$children</span> <span class="sy0">=</span> &nbsp;<span class="re1">$feed</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://schemas.microsoft.com/LiveSearch/2008/04/XML/web&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$children</span><span class="sy0">-&gt;</span><span class="me1">Web</span><span class="sy0">-&gt;</span><span class="me1">Results</span><span class="sy0">-&gt;</span><span class="me1">WebResult</span> <span class="kw1">as</span> <span class="re1">$d</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Title</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Description</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Url</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">DisplayUrl</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>..and one for the pictures using php simplexml :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$Appid</span><span class="sy0">=</span><span class="st0">&quot;A_VERY_LONG_STRING&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Query</span> <span class="sy0">=</span> <span class="st0">&quot;alkmaar&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Numres</span> <span class="sy0">=</span> <span class="nu0">10</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Offset</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">=</span> <span class="st0">&#39;http://api.search.live.net/xml.aspx?&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;Appid=&#39;</span><span class="sy0">.</span><span class="re1">$Appid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;query=&#39;</span><span class="sy0">.</span><span class="re1">$Query</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;sources=image&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;image.count=&#39;</span><span class="sy0">.</span><span class="re1">$Numres</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;image.offset=&#39;</span><span class="sy0">.</span><span class="re1">$Offset</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$feed</span> <span class="sy0">=</span> simplexml_load_file<span class="br0">&#40;</span><span class="re1">$url</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="co1">//use the mms: namespace &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$children</span> <span class="sy0">=</span> &nbsp;<span class="re1">$feed</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia&#39;</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; &nbsp; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;ul ID=&quot;resultList&quot;&gt;&#39;</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; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$children</span><span class="sy0">-&gt;</span><span class="me1">Image</span><span class="sy0">-&gt;</span><span class="me1">Results</span><span class="sy0">-&gt;</span><span class="me1">ImageResult</span> <span class="kw1">as</span> <span class="re1">$d</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;li class=&quot;resultlistitem&quot;&gt;&lt;a href=&quot;&#39;</span> <span class="sy0">.</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">DisplayUrl</span> <span class="sy0">.</span> <span class="st0">&#39;&quot;&gt;&#39;</span> <span class="sy0">.</span> <span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Title</span> <span class="sy0">.</span> <span class="st0">&#39;&lt;/a&gt;&lt;br /&gt;&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;img src=&quot;&#39;</span> <span class="sy0">.</span> <span class="re1">$d</span><span class="sy0">-/&gt;</span>Thumbnail<span class="sy0">-&gt;</span><span class="me1">Url</span><span class="sy0">.</span> <span class="st0">&#39;&quot; /&gt;&lt;br /&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;</span><span class="sy0">.</span><span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Thumbnail</span><span class="sy0">-&gt;</span><span class="me1">ContentType</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#39;</span><span class="sy0">.</span><span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Thumbnail</span><span class="sy0">-&gt;</span><span class="me1">Height</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#39;</span><span class="sy0">.</span><span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Thumbnail</span><span class="sy0">-&gt;</span><span class="me1">Width</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#39;</span><span class="sy0">.</span><span class="re1">$d</span><span class="sy0">-&gt;</span><span class="me1">Thumbnail</span><span class="sy0">-&gt;</span><span class="me1">FileSize</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/li&gt;&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;/ul&gt;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>I actually like that api, I am going to use that.</p>
<h3>bing api with json</h3>
<p>Bing seem to prefer you use json, less bandwidth usage. After their example in the api basics guide :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Numres</span> <span class="sy0">=</span> <span class="nu0">10</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Offset</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Query</span><span class="sy0">=</span><span class="st0">&#39;alkmaar&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">=</span> <span class="st0">&#39;http://api.search.live.net/json.aspx?&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;Appid=&#39;</span><span class="sy0">.</span><span class="re1">$Appid</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;query=&#39;</span><span class="sy0">.</span><span class="re1">$Query</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;sources=image&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;image.count=&#39;</span><span class="sy0">.</span><span class="re1">$Numres</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">.=</span> <span class="st0">&#39;&amp;image.offset=&#39;</span><span class="sy0">.</span><span class="re1">$Offset</span><span class="sy0">;</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="re1">$response</span> <span class="sy0">=</span> <span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$jsonobj</span> <span class="sy0">=</span> json_decode<span class="br0">&#40;</span><span class="re1">$response</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;ul ID=&quot;resultList&quot;&gt;&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$jsonobj</span><span class="sy0">-&gt;</span><span class="me1">SearchResponse</span><span class="sy0">-&gt;</span><span class="me1">Image</span><span class="sy0">-&gt;</span><span class="me1">Results</span> <span class="kw1">as</span> <span class="re1">$value</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; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;li class=&quot;resultlistitem&quot;&gt;&lt;a href=&quot;&#39;</span> <span class="sy0">.</span> <span class="re1">$value</span><span class="sy0">-&gt;</span><span class="me1">Url</span> <span class="sy0">.</span> <span class="st0">&#39;&quot;&gt;&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;img src=&quot;&#39;</span> <span class="sy0">.</span> <span class="re1">$value</span><span class="sy0">-/&gt;</span>Thumbnail<span class="sy0">-&gt;</span><span class="me1">Url</span><span class="sy0">.</span> <span class="st0">&#39;&quot;&gt;&lt;/a&gt;&lt;/li&gt;&#39;</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="kw3">echo</span><span class="br0">&#40;</span><span class="st0">&quot;&lt;/ul&gt;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Of course there is the old RSS-option, which doesnt require an appid but also falls under the api 2.0 tos, and a soap option.</p>
<p>other sources :<br />
There is a <a href="http://bingapiphp.codeplex.com/" rel="nofollow">bing api php class</a> made over at <a href="http://routecafe.com/posts/bing-api-php-v11-release.moccha">routecafe</a>, and a <a href="http://einaros.blogspot.com/2009/06/hovering-bing-search-using-jquery.html" rel="nofollow">jquery bing plugin using json</a> over at Einar Otto Stangvik&#8217;s blog. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/bing-api-with-php-simplexml/2009/09/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>bing</title>
		<link>http://www.juust.org/index.php/bing-serp/2009/08/</link>
		<comments>http://www.juust.org/index.php/bing-serp/2009/08/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 02:46:06 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[serp]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=704</guid>
		<description><![CDATA[for completeness : php bing serp scraping : $query = &#39;serp&#39;; $page = 1; $start = &#40;$page-1&#41;*10; $url = &#39;http://www.bing.com/search?q=&#39;.urlencode&#40;$query&#41;.&#34;&#38;first=&#34;.&#40;$start+1&#41;; &#160; $curl_handle = curl_init&#40;&#41;; curl_setopt&#40;$curl_handle,CURLOPT_URL, $url&#41;; curl_setopt&#40;$curl_handle,CURLOPT_CONNECTTIMEOUT,2&#41;; curl_setopt&#40;$curl_handle, CURLOPT_RETURNTRANSFER, 1&#41;; $return = curl_exec&#40;$curl_handle&#41;; curl_close&#40;$curl_handle&#41;; &#160; $parts = split&#40;&#39;&#60;h3&#62;&#39;, $return&#41;; &#160; &#8230; <a href="http://www.juust.org/index.php/bing-serp/2009/08/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>for completeness : php bing serp scraping :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$query</span> <span class="sy0">=</span> <span class="st0">&#39;serp&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$page</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$start</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="re1">$page</span><span class="nu0">-1</span><span class="br0">&#41;</span><span class="sy0">*</span><span class="nu0">10</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$url</span> <span class="sy0">=</span> <span class="st0">&#39;http://www.bing.com/search?q=&#39;</span><span class="sy0">.</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$query</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;&amp;first=&quot;</span><span class="sy0">.</span><span class="br0">&#40;</span><span class="re1">$start</span><span class="nu0">+1</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="re1">$curl_handle</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl_handle</span><span class="sy0">,</span>CURLOPT_URL<span class="sy0">,</span> <span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl_handle</span><span class="sy0">,</span>CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl_handle</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$return</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl_handle</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_close<span class="br0">&#40;</span><span class="re1">$curl_handle</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="re1">$parts</span> <span class="sy0">=</span> <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;h3&gt;&#39;</span><span class="sy0">,</span> <span class="re1">$return</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">for</span><span class="br0">&#40;</span><span class="re1">$j</span><span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span><span class="re1">$j</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$parts</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$j</span><span class="sy0">++</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; <span class="re1">$p</span><span class="sy0">=</span><span class="re1">$parts</span><span class="br0">&#91;</span><span class="re1">$j</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&#39;#&lt;a<span class="es0">\s</span>+.*?href=[<span class="es0">\&#39;</span>&quot;]([^<span class="es0">\&#39;</span>&quot;]+)[<span class="es0">\&#39;</span>&quot;]<span class="es0">\s</span>*(?:title=[<span class="es0">\&#39;</span>&quot;]([^<span class="es0">\&#39;</span>&quot;]+)[<span class="es0">\&#39;</span>&quot;])?.*?&gt;((?:(?!).)*)#i&#39;</span><span class="sy0">,</span> <span class="re1">$p</span><span class="sy0">,</span> <span class="re1">$urls</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;position: &quot;</span><span class="sy0">.</span><span class="br0">&#40;</span><span class="re1">$start</span> <span class="sy0">+</span><span class="re1">$j</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot; url: &quot;</span><span class="sy0">.</span><span class="re1">$urls</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot; title: &quot;</span><span class="sy0">.</span><span class="re1">$urls</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt;br /&gt;&#39;</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="sy0">&lt;/</span>count<span class="sy0">&gt;&lt;/</span>h3<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/bing-serp/2009/08/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ga api sample : get pageviews</title>
		<link>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/</link>
		<comments>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/#comments</comments>
		<pubDate>Wed, 13 May 2009 14:58:01 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ga]]></category>
		<category><![CDATA[namespaces]]></category>
		<category><![CDATA[simplexml]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=504</guid>
		<description><![CDATA[I was going to put that online : how to get the pageviews out of the google analytics api, using simplexml and php. Google use three namespaces in the output file which make it less easy accessible, so here&#8217;s a &#8230; <a href="http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was going to put that online : how to get the pageviews out of the google analytics api, using simplexml and php. Google use three namespaces in the output file which make it less easy accessible, so here&#8217;s a quick sample of how to get your sites pageviews out of it :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//ids &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = site identifier (from the site data feed)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//metrics &nbsp; &nbsp; = what i want to see</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//start-date </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//end-date </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$feedUri</span> <span class="sy0">=</span> <span class="st0">&quot;https://www.google.com/analytics/feeds/data?ids=ga:10516419&amp;metrics=ga:pageviews&amp;start-date=2009-04-01&amp;end-date=2009-05-01&quot;</span><span class="sy0">;</span> &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$feedUri</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</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; &nbsp; &nbsp; &nbsp;<span class="re1">$headers</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;Authorization: GoogleLogin auth=&quot;</span><span class="sy0">.</span><span class="re1">$Authtoken</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//for authtoken : see previous post</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_HTTPHEADER<span class="sy0">,</span> <span class="re1">$headers</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<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;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</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="co1">//get the string containing the xml file</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$gA</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>the feed has three namespaces (atom, opensearch and dxp/analytics), a simple way is accessing the ENTRY tags (from the Atom namespace), in that tag is one DXP: line and that has the answer to the question.</p>
<p>&lt;dxp:metric confidenceInterval=&#8217;0.0&#8242; name=&#8217;ga:pageviews&#8217; type=&#8217;integer&#8217; value=&#8217;755&#8242;/&gt;</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//load the string into a simple xml object</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$feed</span> <span class="sy0">=</span> simplexml_load_string<span class="br0">&#40;</span><span class="re1">$gA</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="co1">//take the atom namespace</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$children</span> <span class="sy0">=</span> &nbsp;<span class="re1">$feed</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://www.w3.org/2005/Atom&#39;</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="co1">//take the entry tags</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$parts</span> <span class="sy0">=</span> <span class="re1">$children</span><span class="sy0">-&gt;</span><span class="me1">entry</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re1">$parts</span> <span class="kw1">as</span> <span class="re1">$entry</span><span class="br0">&#41;</span> <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="co1">//from the entry tag,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//access the dxp namespace</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$dxp</span> <span class="sy0">=</span> <span class="br0">&#40;</span>object<span class="br0">&#41;</span> <span class="re1">$entry</span><span class="sy0">-&gt;</span><span class="me1">children</span><span class="br0">&#40;</span><span class="st0">&#39;http://schemas.google.com/analytics/2009&#39;</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; &nbsp; &nbsp; &nbsp; <span class="co1">//METRIC contains the answer to the question</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//grab from the tag METRIC the attribute VALUE</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> &nbsp; <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$dxp</span><span class="sy0">-&gt;</span><span class="me1">metric</span><span class="sy0">-&gt;</span><span class="me1">attributes</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">value</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Important is using the (string) typecast, normally simplexml returns a simplexml object, when you force a string type, it gives the actual metric ga:pageview <strong>value</strong> attribute as number.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-analytics-api-sample-get-pageviews/2009/05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>google analytics have an api !</title>
		<link>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/</link>
		<comments>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/#comments</comments>
		<pubDate>Mon, 11 May 2009 17:32:52 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[ga]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=499</guid>
		<description><![CDATA[[note: over at ioncannon Carson McDonald made a cool google analytics plugin for wordpress, i use it on this blog, works fine]. An actual google analytics api, and I missed out on it. This api is already a month old &#8230; <a href="http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[note: over at <a href="http://www.ioncannon.net/projects/google-analytics-dashboard-wordpress-widget/">ioncannon</a> Carson McDonald made a cool google analytics plugin for wordpress, i use it on this blog, works fine].</p>
<p>An actual google analytics api, and I missed out on it. This api is already a month old and i havent read anything on the blogs about it. </p>
<p>I found it half an hour ago, I havent checked it completely but it looks promising. Here is the first bit, basic authentication with php and curl.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$USER_EMAIL</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="co1">// #Insert your Google Account email here</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$USER_PASS</span><span class="sy0">=</span><span class="st0">&quot;&quot;</span><span class="sy0">;</span> <span class="co1">//#Insert your password here</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//array with some general data</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$data</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;Email&quot;</span> <span class="sy0">=&gt;</span> <span class="re1">$USER_EMAIL</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;Passwd&quot;</span> <span class="sy0">=&gt;</span> <span class="re1">$USER_PASS</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;accountType&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;GOOGLE&quot;</span><span class="sy0">,</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;source&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;curl-accountFeed-v1&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;service&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;analytics&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><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="re1">$friends_url</span> <span class="sy0">=</span> <span class="st0">&#39;https://www.google.com/accounts/ClientLogin&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$friends_url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</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="co1">//http-post that contains the array as data</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_POSTFIELDS<span class="sy0">,</span> <span class="re1">$data</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="co1">//go shove the https secure connection verification</span></div>
</li>
<li class="li1">
<div class="de1">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<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">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</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">curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$googleAuth</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</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="co1">//optional : some feedback</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//check if we get an error code from cUrl</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;echo curl_errno($curl).&quot;&lt;br /&gt;&quot;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;echo &nbsp;curl_error($curl).&quot;&lt;br /&gt;&quot; ;</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="co1">//print the body of the returned data</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;print_r($googleAuth);</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//print all the headers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;$info = curl_getinfo($curl);</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// &nbsp; &nbsp;print_r($info);</span></div>
</li>
</ol>
</div>
<p>somewhere in the garbled mess that curl returns is the Authorization token, starts with <strong>auth=</strong>.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$start</span> <span class="sy0">=</span> <span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re1">$googleAuth</span><span class="sy0">,</span> <span class="st0">&quot;Auth=&quot;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="nu0">5</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$Authtoken</span> <span class="sy0">=</span> <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$googleAuth</span><span class="sy0">,</span> <span class="re1">$start</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="co1">//echo $Authtoken;</span></div>
</li>
</ol>
</div>
<p>I put that token in the header of the next calls and google assumes  I am kosher : time to get the accounts feed  :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//add the authoritzation token as extra header</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$headers</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st0">&quot;Authorization: GoogleLogin auth=&quot;</span><span class="sy0">.</span><span class="re1">$Authtoken</span><span class="sy0">;</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="re1">$friends_url</span> <span class="sy0">=</span> <span class="st0">&#39;https://www.google.com/analytics/feeds/accounts/default&#39;</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="re1">$curl</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$friends_url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_CONNECTTIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_HTTPHEADER<span class="sy0">,</span> <span class="re1">$headers</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYHOST<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;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_SSL_VERIFYPEER<span class="sy0">,</span> <span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$curl</span><span class="sy0">,</span> CURLOPT_VERBOSE<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$googleAccounts</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$curl</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="co1">//check errors</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> curl_errno<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> curl_error<span class="br0">&#40;</span><span class="re1">$curl</span><span class="br0">&#41;</span> <span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">print_r</span><span class="br0">&#40;</span><span class="re1">$googleAccounts</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>And there it is : a whole list with weird codes, my account list :) seems easier than the other gData api&#8217;s.</p>
<p>note : the <a href="http://code.google.com/p/ga-api-http-samples/source/browse/trunk/src/v1/dataFeed.sh">google code curl example</a> does not show the &#8221; auth=&#8221; part of the token, they assume you use the entire line &#8220;auth=&#8230;&#8221; as token.</p>
<p>Once I have my spectacular visitor count in a sidebar widget I&#8217;ll blog another post on this one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/google-analytics-api-with-php-curl/2009/05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>curl trackbacks</title>
		<link>http://www.juust.org/index.php/curl-trackbacks/2009/03/</link>
		<comments>http://www.juust.org/index.php/curl-trackbacks/2009/03/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 09:53:13 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[links]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[trackback]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=375</guid>
		<description><![CDATA[I figure i&#8217;d blog a post on trackback linkbuilding. A trackback is &#8230; (post a few and you&#8217;ll get it). The trackback protocol isn&#8217;t that interesting, but the implementation of it by blog-platforms and cms&#8217;es makes it an excellent means &#8230; <a href="http://www.juust.org/index.php/curl-trackbacks/2009/03/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I figure i&#8217;d blog a post on trackback linkbuilding. A trackback is &#8230; (post a few and you&#8217;ll get it). The trackback protocol isn&#8217;t that interesting, but the implementation of it by blog-platforms and cms&#8217;es makes it an excellent means for network development, because it uses a simple http-post. cUrl makes that easy).</p>
<p>To post a succesful link proposal I need some basic data :</p>
<p>about my page </p>
<ul>
<li>url (must exist)</li>
<li>blog owner (free)</li>
<li>blog name (free)</li>
</ul>
<p>about the other page</p>
<ul>
<li>url (must exist)</li>
<li>excerpt (should be proper normal text)</li>
</ul>
<p><em>my page :</em> this is preferably a php routine that hacks some text, pictures and video&#8217;s, PLR or articles together, with a url rewrite. I prefer using xml textfiles in stead of a database, works faster when you set stuff up.</p>
<p><em>other page :</em> don&#8217;t use &#8220;I liked your article so much&#8230;&#8221;, use text that maches text on target pages, preferably get some proper excerpts from xml-feeds like blogsearch, msn and yahoo (excerpts contain the keywords I searched for, as anchor text it works better for search engine visibility and link value). </p>
<p>Let&#8217;s get some stuff from the MSN rss feed :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//a generic query = 5% success</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//add &quot;(powered by) wordpress&quot; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$query</span><span class="sy0">=</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="st0">&#39;keywords+wordpress+trackback&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$xml</span> <span class="sy0">=</span> <span class="sy0">@</span>simplexml_load_file<span class="br0">&#40;</span><span class="st0">&quot;http://search.live.com/results.aspx?q=$query&amp;count=50&amp;first=1&amp;format=rss&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">$count</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$xml</span><span class="sy0">-&gt;</span><span class="me1">channel</span><span class="sy0">-&gt;</span><span class="me1">item</span> <span class="kw1">as</span> <span class="re1">$i</span><span class="br0">&#41;</span> <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; &nbsp; &nbsp;<span class="re1">$count</span><span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//the data from msn</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$target</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$i</span><span class="sy0">-&gt;</span><span class="me1">link</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$target</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$i</span><span class="sy0">-&gt;</span><span class="me1">title</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$target</span><span class="br0">&#91;</span><span class="st0">&#39;excerpt&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$i</span><span class="sy0">-&gt;</span><span class="me1">description</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//some variables I&#39;ll need later on</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$target</span><span class="br0">&#91;</span>id<span class="st0">&#39;] = $count;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $target[&#39;</span>trackback<span class="st0">&#39;] = &#39;</span><span class="st0">&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $target[&#39;</span>trackback_success<span class="st0">&#39;] = 0;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $trackbacks[]=$target;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"</span></div>
</li>
</ol>
</div>
<p>25% of the cms sites in the top of the search engines are WordPress scripts and WordPress always uses /trackback/ in the rdf-url. I get the source of the urls in the search-feed and grab all link-url&#8217;s in it, if any contains /t<strong>rackbac</strong>k/, I post a trackback to that url  and see if it sticks. </p>
<p>(I can also spider all links and check if there is an rdf-segment in the target&#8217;s source (*1), but that takes a lot of time, I could also program a curl array and use multicurl, for my purposes this works fast enough).</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$t</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//I could use curl </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//but 95% of the urls offered are kosher and respond fast</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$content</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">preg_match_all</span> <span class="br0">&#40;</span><span class="st0">&quot;/a[<span class="es0">\s</span>]+[^&gt;]*?href[<span class="es0">\s</span>]?=[<span class="es0">\s</span><span class="es0">\&quot;</span><span class="es0">\&#39;</span>]+&quot;</span><span class="sy0">.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&quot;(.*?)[<span class="es0">\&quot;</span><span class="es0">\&#39;</span>]+.*?&gt;&quot;</span><span class="sy0">.</span><span class="st0">&quot;([^&lt; ]+|.*?)?&lt;<span class="es0">\/</span>a&gt;/&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$content</span><span class="sy0">,</span> <span class="sy0">&amp;</span><span class="re1">$matches</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$uri_array</span> <span class="sy0">=</span> <span class="re1">$matches</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$uri_array</span> <span class="kw1">as</span> <span class="re1">$key</span> <span class="sy0">=&gt;</span> <span class="re1">$link</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re1">$link</span><span class="sy0">,</span> <span class="st0">&#39;rackbac&#39;</span><span class="br0">&#41;</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;trackback&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$link</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>count<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>When I fire a trackback, the other script will try and assert if my page has a link and matching text. I have to make sure my page shows the excerpts and links, so I stuff all candidates in a cached xml file.  </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> cache_xml_store<span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="sy0">,</span> <span class="re1">$pagetitle</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">$xml</span> <span class="sy0">=</span> <span class="st0">&#39;&lt; ?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"> &lt;trackbacks&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$a</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$a</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$a</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$arr</span> <span class="sy0">=</span> <span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$a</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;entry&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;id&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&#39;id&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt;/id&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;excerpt&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&#39;excerpt&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt;/excerpt&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;link&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt;/link&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;title&gt;&#39;</span><span class="sy0">.</span><span class="re1">$arr</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&lt;/title&gt;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&#39;</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;<span class="re1">$xml</span> <span class="sy0">.=</span> <span class="st0">&#39;&lt;/count&gt;&lt;/trackbacks&gt;&#39;</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="re1">$fname</span> <span class="sy0">=</span> <span class="st0">&#39;cache/trackback&#39;</span><span class="sy0">.</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$pagetitle</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;.xml&#39;</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">file_exists</span><span class="br0">&#40;</span><span class="re1">$fname</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw3">unlink</span><span class="br0">&#40;</span><span class="st0">&#39;cache/&#39;</span><span class="sy0">.</span><span class="re1">$fname</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$fhandle</span> <span class="sy0">=</span> <span class="kw3">fopen</span><span class="br0">&#40;</span><span class="re1">$fname</span><span class="sy0">,</span> <span class="st0">&#39;w&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">fwrite</span><span class="br0">&#40;</span><span class="re1">$fhandle</span><span class="sy0">,</span> <span class="re1">$xml</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">fclose</span><span class="br0">&#40;</span><span class="re1">$fhandle</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>I use simplexml to read that cached file and show the excertps and links once the page is requested. </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// retrieve the cached xml and return it as array.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> cache_xml_retrieve<span class="br0">&#40;</span><span class="re1">$pagetitle</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">$fname</span> <span class="sy0">=</span> <span class="st0">&#39;cache/trackback&#39;</span><span class="sy0">.</span><span class="kw3">urlencode</span><span class="br0">&#40;</span><span class="re1">$pagetitle</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;.xml&#39;</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">file_exists</span><span class="br0">&#40;</span><span class="re1">$fname</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$xml</span><span class="sy0">=@</span>simplexml_load_file<span class="br0">&#40;</span><span class="re1">$fname</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="sy0">!</span><span class="re1">$xml</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$xml</span><span class="sy0">-&gt;</span><span class="me1">entry</span> <span class="kw1">as</span> <span class="re1">$e</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$trackback</span><span class="br0">&#91;</span><span class="st0">&#39;id&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span><span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$e</span><span class="sy0">-&gt;</span><span class="me1">id</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$trackback</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;rid<span class="br0">&#40;</span><span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$e</span><span class="sy0">-&gt;</span><span class="me1">link</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$trackback</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$e</span><span class="sy0">-&gt;</span><span class="me1">title</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$trackback</span><span class="br0">&#91;</span><span class="st0">&#39;description&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> &nbsp;<span class="br0">&#40;</span>string<span class="br0">&#41;</span> <span class="re1">$e</span><span class="sy0">-&gt;</span><span class="me1">description</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re1">$arr</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; <span class="kw1">return</span> <span class="re1">$trackbacks</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;<span class="kw1">return</span> <span class="kw2">false</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>(this setup requires a subdirectory <strong>cache</strong> set to read/write with chmod 777)</p>
<p>I use http://www.domain.com/financial+trends.html and extract the pagetitle as &#8220;financial trends&#8217;, which has an xml-file http://www.domain.com/cache/financial+trends.xml. (In my own script I use sef urls with mod_rewrite, you can also use the $_SERVER array).</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$pagetitle</span><span class="sy0">=</span><span class="kw3">preg_replace</span><span class="br0">&#40;</span><span class="st0">&#39;/<span class="es0">\+</span>/&#39;</span><span class="sy0">,</span> <span class="st0">&#39; &#39;</span><span class="sy0">,</span> <span class="kw3">htmlentities</span><span class="br0">&#40;</span><span class="re1">$_REQUEST</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> ENT_QUOTES<span class="sy0">,</span> <span class="st0">&quot;UTF-8&quot;</span><span class="br0">&#41;</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="re1">$cached_excerpts</span> <span class="sy0">=</span> cache_xml_retrieve<span class="br0">&#40;</span><span class="re1">$pagetitle</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="co1">//do some stuff with, make it look nice &nbsp;:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$s</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$s</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$cached_excerpts</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$s</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//this lists the trackback (candidates)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$cached_excerpts</span><span class="br0">&#91;</span><span class="re1">$s</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;excerpt&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&#39;&lt;a href=&quot;&#39;</span><span class="sy0">.</span><span class="re1">$cached_excerpts</span><span class="br0">&#91;</span><span class="re1">$s</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;link&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&quot;&gt;&#39;</span><span class="sy0">.</span><span class="re1">$cached_excerpts</span><span class="br0">&#91;</span><span class="st0">&#39;title&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;&#39;</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="sy0">&lt;/</span>count<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Now I prepare the data for the trackback post :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$t</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$trackback_url</span> <span class="sy0">=</span> <span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;trackback&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//does it have a trackback target url ? then prepare data :</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$trackback_url</span> <span class="sy0">!=</span><span class="st0">&#39;&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$trackback_data</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;url&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;url of my page with the link to the target&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="st0">&quot;title&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;title of my page&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;blog_name&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;name of my blog&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="st0">&quot;excerpt&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;[...]&#39;</span><span class="sy0">.</span><span class="kw3">trim</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;description&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">150</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&#39;[...]&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//&#8230;and try the trackback</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;trackback_success&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> trackback_ping<span class="br0">&#40;</span><span class="re1">$trackback_url</span><span class="sy0">,</span> <span class="re1">$mytrackbackdata</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>count<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>This the actual trackback post using cUrl. cUrl has a convenient timeout setting, I  use three seconds. If a host does not respond in half a second it&#8217;s probably dead. Three seconds is generous.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> trackback_ping<span class="br0">&#40;</span><span class="re1">$trackback_url</span><span class="sy0">,</span> <span class="re1">$trackback</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;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//make a string of the data array to post</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$trackback</span> <span class="kw1">as</span> <span class="re1">$key</span><span class="sy0">=&gt;</span><span class="re1">$value</span><span class="br0">&#41;</span> <span class="re1">$strout</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$key</span><span class="sy0">.</span><span class="st0">&quot;=&quot;</span><span class="sy0">.</span><span class="kw3">rawurlencode</span><span class="br0">&#40;</span><span class="re1">$value</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$postfields</span><span class="sy0">=</span> <span class="kw3">implode</span><span class="br0">&#40;</span><span class="st0">&#39;&amp;&#39;</span><span class="sy0">,</span> <span class="re1">$strout</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="co1">//create a curl instance</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$ch</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span> <span class="re1">$trackback_url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_TIMEOUT<span class="sy0">,</span> <span class="nu0">3</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_USERAGENT<span class="sy0">,</span> <span class="st0">&quot;Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="kw2">true</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="co1">//set a custom form header</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_HTTPHEADER<span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;Content-type: application/x-www-form-urlencoded&#39;</span><span class="br0">&#41;</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;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_NOBODY<span class="sy0">,</span> <span class="kw2">true</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; &nbsp; &nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_POST<span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$ch</span><span class="sy0">,</span> CURLOPT_POSTFIELDS<span class="sy0">,</span> <span class="re1">$postfields</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="re1">$content</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$ch</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="co1">//if the return has a tag &#39;error&#39; with as value 0 it went flawless</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$success</span> <span class="sy0">=</span> <span class="nu0">0</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">strpos</span><span class="br0">&#40;</span><span class="re1">$content</span><span class="sy0">,</span> <span class="st0">&#39;&gt;0&#39;</span><span class="br0">&#41;</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="re1">$success</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;curl_close <span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">unset</span><span class="br0">&#40;</span><span class="re1">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$success</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Now the last routine : rewrite the cached xml file with only the successful trackbacks (seo stuff) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$t</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$t</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#39;trackback_success&#39;</span><span class="br0">&#93;</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$store_trackbacks</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$trackbacks</span><span class="br0">&#91;</span><span class="re1">$t</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">cache_xml_store<span class="br0">&#40;</span><span class="re1">$store_trackbacks</span><span class="sy0">,</span> <span class="re1">$pagetitle</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>count<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>voila : a page with only successful trackbacks. </p>
<p>Google (the backrub engine) don&#8217;t like sites that use automated link-building methods, other engines (Baidu, MSN, Yahoo) use a more normal link popularity keyword matching algorithm. Trackback linking helps getting you a clear engine profile at relative low cost. </p>
<p>0) for brevity and clarity, the code above is rewritten (taken from a trackback script I am developing on another site), it can contain some typo&#8217;s.</p>
<p>*1) If you want to spider links for rdf-segments : <a href="https://svn.typo3.org/TYPO3v4/Extensions/yablog/trunk/class.tx_yablog_ping.php" rel="nofollow">TYPO3v4</a> have some code for easy retrieval of trackback-uri&#8217;s :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; * Fetches ping url from the given url</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; *</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; * @param string $url URL to probe for RDF</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; * @return string Ping URL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;protected <span class="kw2">function</span> getPingURL<span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$pingUrl</span> <span class="sy0">=</span> <span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">// Get URL content</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$urlContent</span> <span class="sy0">=</span> t3lib_div<span class="sy0">::</span><span class="me2">getURL</span><span class="br0">&#40;</span><span class="re1">$url</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="re1">$urlContent</span> <span class="sy0">&amp;&amp;</span> <span class="br0">&#40;</span><span class="re1">$rdfPos</span> <span class="sy0">=</span> <span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re1">$urlContent</span><span class="sy0">,</span> <span class="st0">&#39;&lt;rdf :RDF&#39;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">!==</span> <span class="kw2">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// RDF exists in this content. Get it and parse</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$urlContent</span> <span class="sy0">=</span> <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$urlContent</span><span class="sy0">,</span> <span class="re1">$rdfPos</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re1">$endPos</span> <span class="sy0">=</span> <span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re1">$urlContent</span><span class="sy0">,</span> <span class="st0">&#39;&lt;/rdf:RDF&gt;&#39;</span><span class="sy0">,</span> <span class="re1">$rdfPos</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">!==</span> <span class="kw2">false</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// We will use quick regular expression to find ping URL</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$rdfContent</span> <span class="sy0">=</span> <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re1">$urlContent</span><span class="sy0">,</span> <span class="re1">$rdfPos</span><span class="sy0">,</span> <span class="re1">$endPos</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$pingUrl</span> <span class="sy0">=</span> <span class="kw3">preg_replace</span><span class="br0">&#40;</span><span class="st0">&#39;/trackback:ping=&quot;([^&quot;]+)&quot;/&#39;</span><span class="sy0">,</span> <span class="st0">&#39;<span class="es0">\1</span>&#39;</span><span class="sy0">,</span> <span class="re1">$rdfContent</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$pingUrl</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"><span class="sy0">&lt;/</span>rdf<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/curl-trackbacks/2009/03/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>proxies !</title>
		<link>http://www.juust.org/index.php/icanhazproxies/2009/02/</link>
		<comments>http://www.juust.org/index.php/icanhazproxies/2009/02/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 03:41:16 +0000</pubDate>
		<dc:creator>juust</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[seo tips and tricks]]></category>
		<category><![CDATA[scrape]]></category>

		<guid isPermaLink="false">http://www.juust.org/?p=336</guid>
		<description><![CDATA[I got a site banned at Google so I got pissed and took a script from the blackbox @ digerati marketing to scrape proxy addresses, wired a database and curl into it, so now it scrapes proxies, random picks a &#8230; <a href="http://www.juust.org/index.php/icanhazproxies/2009/02/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got a site banned at Google so I got pissed and took a script from the blackbox <a href="http://www.digeratimarketing.co.uk/2008/06/12/blackhat-seo-tools-scripts-the-digerati-blackbox/" rel="nofollow">@ digerati marketing</a> to scrape proxy addresses, wired a database and curl into it, so now it scrapes proxies, random picks a proxy, prunes dead proxies and returns data. </p>
<p>Basic, it uses anonymous (level 2) proxies, but it works.</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* (mysql table)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">CREATE TABLE IF NOT EXISTS `serp_proxies` (</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; `id` int(11) NOT NULL auto_increment,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; `ip` text NOT NULL,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; `port` text NOT NULL,</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp; PRIMARY KEY &nbsp;(`id`)</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">) ENGINE=MyISAM &nbsp;DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//initialize database class, replace with own code</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span><span class="br0">&#40;</span><span class="st0">&#39;init.php&#39;</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="co1">//main class</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$p</span><span class="sy0">=</span><span class="kw2">new</span> MyProxies<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//do I have proxies in the database ?</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//if not, get some and store them</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">GetCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&lt;</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">GetSomeAir</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">store2database</span><span class="br0">&#40;</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">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//pick one</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">RandomProxy</span><span class="br0">&#40;</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="co1">//get the page</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">DoRequest</span><span class="br0">&#40;</span><span class="st0">&#39;http://www.domain.com/robots.txt&#39;</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="co1">//error handling</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">ProxyError</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//7 &nbsp; no connect</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//28 &nbsp; timed out</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//52 &nbsp; empty reply</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//if it is dead, doesn&#39;t allow connections : prune it</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">ProxyError</span><span class="sy0">==</span><span class="nu0">7</span><span class="br0">&#41;</span> <span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">DeleteProxy</span><span class="br0">&#40;</span><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">proxy_ip</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="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">ProxyError</span><span class="sy0">==</span><span class="nu0">52</span><span class="br0">&#41;</span> <span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">DeleteProxy</span><span class="br0">&#40;</span><span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">proxy_ip</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="co1">//you could loop back until you get a 0-error proxy, but that ain&#39;t the point</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//give me the content</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="re1">$p</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">Content</span><span class="sy0">;</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="kw2">Class</span> MyProxies <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$Proxies</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$ThisProxy</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$MyCount</span><span class="sy0">;</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="co1">//picks a random proxy from the database</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> RandomProxy<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">global</span> <span class="re1">$serpdb</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$offset_result</span> <span class="sy0">=</span> &nbsp;<span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `serp_proxies`&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$offset_row</span> <span class="sy0">=</span> <span class="kw3">mysql_fetch_object</span><span class="br0">&#40;</span><span class="re1">$offset_result</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$offset</span> <span class="sy0">=</span> <span class="re1">$offset_row</span><span class="sy0">-&gt;</span><span class="me1">offset</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$result</span> <span class="sy0">=</span> <span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;SELECT * FROM `serp_proxies` LIMIT $offset, 1&quot;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="re1">$row</span><span class="sy0">=</span><span class="kw3">mysql_fetch_assoc</span><span class="br0">&#40;</span><span class="re1">$result</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//make instance of Proxy, with proxy_host ip and port</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span> <span class="sy0">=</span> <span class="kw2">new</span> Proxy<span class="br0">&#40;</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;ip&#39;</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&#39;:&#39;</span><span class="sy0">.</span><span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;port&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">proxy_ip</span> <span class="sy0">=</span> <span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;ip&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ThisProxy</span><span class="sy0">-&gt;</span><span class="me1">proxy_port</span> <span class="sy0">=</span> <span class="re1">$row</span><span class="br0">&#91;</span><span class="st0">&#39;port&#39;</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">break</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;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//visit the famous russian site </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> GetSomeAir<span class="br0">&#40;</span><span class="re1">$pages</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$index</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> <span class="re1">$index</span><span class="sy0">&lt;</span> <span class="re1">$pages</span><span class="sy0">;</span> <span class="re1">$index</span><span class="sy0">++</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$pageno</span> <span class="sy0">=</span> <span class="kw3">sprintf</span><span class="br0">&#40;</span><span class="st0">&quot;%02d&quot;</span><span class="sy0">,</span><span class="re1">$index</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$page_url</span> <span class="sy0">=</span> <span class="st0">&quot;http://www.samair.ru/proxy/proxy-&quot;</span> <span class="sy0">.</span> <span class="re1">$pageno</span> <span class="sy0">.</span> <span class="st0">&quot;.htm&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$page_html</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="re1">$page_url</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="co1">//get rid of the crap and extract the proxies</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;/&lt;tr&gt;&lt;td&gt;(.*)&lt; <span class="es0">\/</span>td&gt;&lt; <span class="es0">\/</span>tr&gt;/&quot;</span><span class="sy0">,</span> <span class="re1">$page_html</span><span class="sy0">,</span> <span class="re1">$matches</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$txt</span> <span class="sy0">=</span> <span class="re1">$matches</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$main</span> <span class="sy0">=</span> <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;/td&gt;&lt;tr&gt;&lt;td&gt;&#39;</span><span class="sy0">,</span> <span class="re1">$txt</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re1">$x</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span><span class="re1">$x</span><span class="sy0">&lt;</span>count <span class="br0">&#40;</span><span class="re1">$main</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="re1">$x</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$arr</span> <span class="sy0">=</span> <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">&#39;&lt;/td&gt;&lt;td&gt;&#39;</span><span class="sy0">,</span> <span class="re1">$main</span><span class="br0">&#91;</span><span class="re1">$x</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Proxies</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">&#39;:&#39;</span><span class="sy0">,</span> <span class="re1">$arr</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//store the retrieved proxies (stored in this-&gt;Proxies) in the database</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> store2database<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">global</span> <span class="re1">$serpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Proxies</span> <span class="kw1">as</span> <span class="re1">$p</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$result</span> <span class="sy0">=</span> <span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;SELECT * FROM serp_proxies WHERE ip=&#39;&quot;</span><span class="sy0">.</span><span class="re1">$p</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">mysql_num_rows</span><span class="br0">&#40;</span><span class="re1">$result</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;INSERT INTO serp_proxies (`ip`, `port`) VALUES (&#39;&quot;</span><span class="sy0">.</span><span class="re1">$p</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;, &#39;&quot;</span><span class="sy0">.</span><span class="re1">$p</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;&#39;)&quot;</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; <span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;DELETE FROM serp_proxies WHERE `ip`=&#39;&#39;&quot;</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;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> DeleteProxy<span class="br0">&#40;</span><span class="re1">$ip</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">global</span> <span class="re1">$serpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;DELETE FROM serp_proxies WHERE `ip`=&#39;&quot;</span><span class="sy0">.</span><span class="re1">$ip</span><span class="sy0">.</span><span class="st0">&quot;&#39;&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</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">&nbsp;<span class="kw2">function</span> GetCount<span class="br0">&#40;</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"><span class="co1">//use this to check how many proxies there are in the database</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">global</span> <span class="re1">$serpdb</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">MyCount</span> <span class="sy0">=</span> <span class="kw3">mysql_num_rows</span><span class="br0">&#40;</span><span class="re1">$serpdb</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span><span class="st0">&quot;SELECT * FROM `serp_proxies`&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">MyCount</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;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</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="kw2">Class</span> Proxy <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$proxy_ip</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$proxy_port</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="kw2">var</span> <span class="re1">$proxy_host</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$proxy_auth</span><span class="sy0">;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$ch</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$Content</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$USERAGENT</span> <span class="sy0">=</span> <span class="st0">&quot;Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$ProxyError</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$ProxyErrorMsg</span> <span class="sy0">=</span> <span class="st0">&#39;&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$TimeOut</span><span class="sy0">=</span><span class="nu0">3</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">var</span> <span class="re1">$IncludeHeaders</span> <span class="sy0">=</span> <span class="nu0">0</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="kw2">function</span> Proxy<span class="br0">&#40;</span><span class="re1">$host</span><span class="sy0">,</span> <span class="re1">$username</span><span class="sy0">=</span><span class="st0">&#39;&#39;</span><span class="sy0">,</span> <span class="re1">$pwd</span><span class="sy0">=</span><span class="st0">&#39;&#39;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//initialize class, set host </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_host</span> <span class="sy0">=</span> <span class="re1">$host</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$username</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span> <span class="sy0">||</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$pwd</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_auth</span> <span class="sy0">=</span> <span class="re1">$username</span><span class="sy0">.</span><span class="st0">&quot;:&quot;</span><span class="sy0">.</span><span class="re1">$pwd</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> CURL_PROXY<span class="br0">&#40;</span><span class="re1">$cc</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_host</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$cc</span><span class="sy0">,</span> CURLOPT_PROXY<span class="sy0">,</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_host</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_auth</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;curl_setopt<span class="br0">&#40;</span><span class="re1">$cc</span><span class="sy0">,</span> CURLOPT_PROXYUSERPWD<span class="sy0">,</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">proxy_auth</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">function</span> DoRequest<span class="br0">&#40;</span><span class="re1">$url</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span> <span class="sy0">=</span> curl_init<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="sy0">,</span> CURLOPT_URL<span class="sy0">,</span><span class="re1">$url</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">CURL_PROXY</span><span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="sy0">,</span> CURLOPT_HEADER<span class="sy0">,</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">IncludeHeaders</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// baca header</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="sy0">,</span> CURLOPT_USERAGENT<span class="sy0">,</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">USERAGENT</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="sy0">,</span> CURLOPT_RETURNTRANSFER<span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; curl_setopt<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="sy0">,</span> CURLOPT_TIMEOUT<span class="sy0">,</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">TimeOut</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">Content</span> <span class="sy0">=</span> curl_exec<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</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="co1">//if an error occurs, store the number and message</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>curl_errno<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ProxyError</span> <span class="sy0">=</span> &nbsp;curl_errno<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ProxyErrorMsg</span> <span class="sy0">=</span> &nbsp;curl_error<span class="br0">&#40;</span><span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">ch</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>td<span class="sy0">&gt;&lt;/</span>count<span class="sy0">&gt;&lt;/</span>td<span class="sy0">&gt;&lt;/</span>tr<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>There is not much to say about it, just a rough outline. I would prefer elite level 1 proxies but for now it will have to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juust.org/index.php/icanhazproxies/2009/02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

