2015年6月22日 星期一

Flask-WTF 筆記

Flask-WTF 提供了简单地 WTForms 的集成。

当前版本

Flask-WTF 的当前版本是 0.9.5。
其它版本的文档请见 Read the Docs

功能

  • 集成 wtforms。
  • 带有 csrf 令牌的安全表单。
  • 全局的 csrf 保护。
  • 支持验证码(Recaptcha)。
  • 与 Flask-Uploads 一起支持文件上传。
  • 国际化集成。

用户指南

这一部分文档是枯燥的,以介绍 Flask-WTF 背景信息开始,接着注重说明使用 Flask-WTF 每步的步骤。

API 文档

如果你正在查询某一个特定的函数,类或者方法的信息的话,这一部分正是你所需要的。

2015年3月18日 星期三

2014年12月9日 星期二

curl半人工方式解決驗證碼問題

如果有比較複雜的驗證碼沒辦法用curl擷取資料時,發現有個網站提供另一個思路解決問題,雖然有點麻煩,但也是方法之一....

/**
 * 模拟登录
 * Design by maben 
 */

//初始化变量
$cookie_file = "tmp.cookie";
$login_url = "http://xxx.com/logon.php";
$verify_code_url = "http://xxx.com/verifyCode.php";

echo "正在获取COOKIE...\n";
$curlj = curl_init();
$timeout = 5;
curl_setopt($curl, CURLOPT_URL, $login_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //获取COOKIE并存储
$contents = curl_exec($curl);
curl_close($curl);

echo "COOKIE获取完成,正在取验证码...\n";
//取出验证码
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $verify_code_url);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$img = curl_exec($curl);
curl_close($curl);

$fp = fopen("verifyCode.jpg","w");
fwrite($fp,$img);
fclose($fp);
echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";
//停止运行20秒
sleep(20);

echo "休眠完成,开始取验证码...\n";
$code = file_get_contents("code.txt");
echo "验证码成功取出:$code\n";
echo "正在准备模拟登录...\n";

$post = "username=xxx&pwd=xxx&verifycode=$code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
$result=curl_exec($curl);
curl_close($curl);

if(substr_count($result,"登录成功")){
 echo "登录成功\n";
}else{
 echo "登录失败\n";
 exit;
}

2014年12月8日 星期一

php curl 使用proxy抓取資料

有時候,特殊場合要用到proxy時,curl也能輕鬆幫你搞定

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://twbotpost.blogspot.tw/"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
curl_setopt($ch, CURLOPT_PROXY, 127.0.0.1:8080); 
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password'); 
$result=curl_exec($ch); 
curl_close($ch); 

2014年12月3日 星期三

樂天市場-自動購買 搶商品

最近幾天樂天市場在做50%的商品搶購活動

這種活動最常遇到還沒有進入商品頁就被搶完了= ='

研究一下是否可以使用程式自動下單

發現不難,沒有驗證碼,一步一步跟著走就可以了!!

大概流程如下

1.產品訂購頁有hidden資訊,一定要進入取得。
2.確認訂單
3.登入使用者帳號
4.結帳。

大致上沒有太多問題。祝各位搶購成功


2014年11月30日 星期日

旅行台灣-RSS

原網址:http://timefortaiwan.tw/tw/news/index_101_601

原本有提供RSS資訊,不過改版後好像消失了。

自己要的資料自己寫!

http://fb1567.bget.ru/timefortaiwan.php

擷取最新消息資料。



2014年11月13日 星期四

PHP CURL多線程取得資料

function curl_multi_get($urls = array()){
    $mh = curl_multi_init();
    foreach ($urls as $i => $url) {
        $conn[$i] = curl_init($url);
        curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
        curl_setopt($conn[$i], CURLOPT_HEADER ,0);
        curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);
        curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER,true);
        curl_multi_add_handle ($mh,$conn[$i]);
    }
    do {
        curl_multi_exec($mh,$active);
    } while ($active);

    foreach ($urls as $i => $url) {
        $data[$i] = curl_multi_getcontent($conn[$i]);
        curl_multi_remove_handle($mh,$conn[$i]);
        curl_close($conn[$i]);
    }
    curl_multi_close($mh);
    return $data;
}

資料來源:http://www.kalvin.cn/article/php-curl-multi-thread-request/