2016-07-17 2 views
2

Я написал сценарий, чтобы захватить данные из php-файла на веб-сайте. Я написал сценарий так, чтобы он выводил только данные, если текущие данные на странице изменились с того, что было последним, когда он захватывал данные со страницы. Страница требует аутентификации, поэтому я добавил PHPSESSID. Это позволит просматривать страницу. Cloudfare был реализованurllib2 обходит облачный

Проверка вашего браузера перед обращением к веб-сайту.

Этот процесс является автоматическим. Ваш браузер скоро перенаправит ваш запрошенный контент. Пожалуйста, позвольте до 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

Заменить все использование urllib с помощью [использования cfscape] (https://github.com/Anorov/cloudflare-scrape#usage) ... Все, что вам нужно сделать, это получить содержимое веб-сайта, не так ли? –

ответ

0

Целью страницы CloudFlare «обнаружение вашего браузера» является, по сути, блокирование ботов.

Он работает правильно здесь. Вам нужно будет попросить владельца веб-сайта отключить эту защиту для своего сайта или сделать для вас исключение.

+0

Спасибо капитану! –

Смежные вопросы