2016-07-17 6 views
2

私はウェブサイト上のPHPファイルからデータを取得するためのスクリプトを書いています。私は、ページの現在のデータがページからデータを最後に取得したときのデータから変化した場合にのみ、データを出力するようにスクリプトを書きました。ページには認証が必要なので、PHPSESSIDが追加されているのはそのためです。そのページを表示できるようになります。 Cloudflareが実装されましたurllib2はcloudflareを迂回します

website.comにアクセスする前にブラウザを確認してください。

このプロセスは自動的です。まもなく、ブラウザは要求されたコンテンツにリダイレクトします。

これは私のスクリプトが壊れた... 5秒まで許可し、ページからデータをつかむことができませんしてください。私はcfscrapeを見て、それを動作させるために現在のスクリプトに実装する方法を理解できません。誰かが助けを提供することができれば素晴らしいだろう!私は助けを手に入れなければならないのは嫌いですが、私はこの機能をできるだけ早く機能させる必要があります。

#!/usr/bin/python 

from time import sleep 
import re 
import hashlib 
import urllib2 
import winsound 

def doMd5(data): 
    mdo = hashlib.md5() 
    mdo.update(data) 
    return mdo.hexdigest() 

def doRequest(): 
    try: 
     head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 
       'Cookie': 'PHPSESSID=ldc1bp9mj7n4ocffvftm25te62'} 
     req = urllib2.Request('http://www.example.com/random/random.php', headers=head) 
     res = urllib2.urlopen(req) 
     data = res.read() 
     return data 
    except: 
     return "exception" 

last_log = "" 

while True: 
    data = doRequest() 

    if data == "exception" or data == "": 
     print "Exception!" 
     continue 

    new_hash = doMd5(data) 

    if new_hash != last_log: 
     print "New Data" 
     winsound.Beep(100, 80) 

      handler = open('data.html', 'a') 
      handler.write(data + '\n') 
      handler.close() 

      last_log = new_hash 
    else: 
     sleep(3) 
     print "Refreshing..." 
     continue 
+0

[cfscapeの使用状況](https://github.com/Anorov/cloudflare-scrape#usage)を持つすべてのurllibは使用量を置換...あなたがする必要があるすべては右、ウェブサイトのコンテンツを取得するのですか? –

答えて

0

CloudFlareの「ブラウザの検出」ページの目的は、基本的にボットをブロックすることです。

ここで正しく機能しています。あなたは自分のサイトのためにこの保護を無効にするには、Webサイトの所有者に依頼する、またはあなたのための例外を作成する必要があります。

+0

ありがとうキャプテン明白! –

関連する問題