Python爬虫小技巧:如何通过修改referer绕开访问控制

有修改 UA 为搜索引擎蜘蛛的,但是这招越不越不管用,因为这积累一阵日志后就较容易判定出来真实蜘蛛 IP。
另外有个 修改 referer 取巧的方法,https://www.yuanrenxue.com/crawler/crawler-tricks-2.html
Python爬虫小技巧:如何通过修改referer绕开访问控制

24 回复

谢谢楼主无私分享


import requests

# 目标网站
url = 'https://example.com/protected-page'

# 设置headers,重点修改Referer字段
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
    'Referer': 'https://example.com/',  # 伪装成从该站内页面跳转而来
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive',
}

try:
    response = requests.get(url, headers=headers, timeout=10)
    
    if response.status_code == 200:
        print("成功访问页面")
        # 处理响应内容
        print(response.text[:500])  # 打印前500字符
    else:
        print(f"访问失败,状态码: {response.status_code}")
        
except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")

# 更完整的示例:模拟从搜索引擎跳转
def crawl_with_referer(url, referer_url):
    """使用指定Referer访问页面"""
    session = requests.Session()
    
    # 设置完整的headers
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
        'Referer': referer_url,
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate',
        'DNT': '1',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
    }
    
    # 可以添加cookies使请求更真实
    session.headers.update(headers)
    
    try:
        resp = session.get(url, timeout=15)
        return resp
    except Exception as e:
        print(f"请求失败: {e}")
        return None

# 使用示例
if __name__ == '__main__':
    # 伪装成从Google搜索跳转
    result = crawl_with_referer(
        'https://example.com/data',
        'https://www.google.com/'
    )
    
    if result and result.status_code == 200:
        print("伪装Referer访问成功")

核心原理:Referer是HTTP请求头的一部分,告诉服务器当前请求是从哪个页面链接过来的。有些网站会检查这个字段,只允许从特定来源的访问。通过修改Referer为网站信任的域名(如站内页面、搜索引擎等),可以绕过这种基础的反爬机制。

常用伪装策略:

  1. 设为目标网站的主域名或站内页面URL
  2. 设为空字符串(有些网站允许无Referer访问)
  3. 设为常见的搜索引擎域名(如google.combaidu.com
  4. 设为同域名下的其他页面

注意:这只是基础反爬手段之一,现代网站通常结合更多验证方式。

爬虫怎么入门呢。

这不是基本操作吗

多谢

Python requests 库用起来就入门了

厉害了,老哥。我爬虫被封禁了好几天,用这招解决了。

你不是我的托吧, 老哥?

真不是,老哥。正好看到了这篇文章,然后就试了下,完美解决。

所以怎么修改 referer

修改 referer 确实是常规操作

需要用户权限的访问的网页也可以通过这个方法访问么

老实说修改 referer 不是常识么…

上面说用这招解决了问题的,只能说连入门都还没有入门

知道了 准备堵

专门有 fake 库循环就完事了

那个不能生成 referer

感觉像是在逛博客评论区

楼主既然是来 v 站引流的,至少得放个摘要吧

我也不是,但是就是比你厉害,咋滴?看不惯就 block

碰到验证码、甚至还会判断 selenium 行为的网站……只好流下没技术的泪水。

没地方找优越感了?

回到顶部