urllib2绕过cloudflare

时间:2016-07-17 00:11:01

标签: python python-2.7 urllib2 cloudflare

我写了一个脚本来从网站上的php文件中获取数据。我编写了脚本,只有当页面上的当前数据与上次从页面抓取数据时的数据发生变化时,才会输出数据。该页面确实需要身份验证,这就是我添加了PHPSESSID的原因。这样可以查看页面。 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

1 个答案:

答案 0 :(得分:0)

CloudFlare"检测您的浏览器的目的"页面本质上是阻止机器人。

它在这里工作正常。您需要请求网站所有者为其网站禁用此保护,或者为您制作例外。