http访问请求的实现

JAVA实现http/https的Post、Get、代理访问请求 前言平时测试的时候可能会遇到使用Java发送http或者https请求的需求.网上找了一圈暂时没有发现比较称心方便能够直接使用的代码.所以就借鉴别人的代码按自己需求改造了一下.主要实现http/https的get和post请求,并支持设置代理抓包.只需要一个Java文件就搞定,不需要第三方库支持. 阅读详情


1、urlib2和urllib两个内置模块实现http请求

例子:

import urllib2
res = urllib2.urlopen('http://www.zhihu.com')
html = res.read()
print html

或者

import urllib2
request = urllib2.Request('http://www.zhihu.com')
res = urllib2.urlopen(request)
html = res.read()
print html

或者

import urllib2
import urllib

url = 'http://test.vfast.com/login'
data = {'username': 'vfast',
        'password': 'vfast'
        }

data = urllib.urlencode(data)
result = urllib2.Request(url, data)
response = urllib2.urlopen(result)
html = response.read()
print html

添加header头

import urllib2
import urllib

url = 'https://mail.qq.com/'
data = {'username': 'xxxx@qq.com',
        'password': 'xxxx'
        }
user_agent = 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'
referer = 'https://mail.qq.com/'

headers = {'User-Agent': user_agent, 'Referer': referer}
data = urllib.urlencode(data)
result = urllib2.Request(url, data, headers)
response = urllib2.urlopen(result)
html = response.read()
print html

或者

import urllib2
import urllib

url = 'https://mail.qq.com/'
data = {'username': 'xxxx@qq.com',
        'password': 'xxxx'
        }
user_agent = 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'
referer = 'https://mail.qq.com/'

headers = {'User-Agent': user_agent, 'Referer': referer}
data = urllib.urlencode(data)
result = urllib2.Request(url)

result.add_header('User-Agent', user_agent)
result.add_header('Referer', referer)
result.add_data(data)

response = urllib2.urlopen(result)
html = response.read()
print html

获取cookie的值

import urllib2
import cookielib

cookie = cookielib.CookieJar()
res = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = res.open('http://www.zhihu.com')
for item in cookie:
    print item.name + ':' + item.value

 

自定义cookie内容

import urllib2

opener = urllib2.build_opener()
opener.addheaders.append(('Cookie', 'email=' + 'xxxxx'))
requests = urllib2.Request('http://www.zhihu.com/')
response = opener.open(requests)
print response.headers
data = response.read()
print data

timeout设置超时

python2.6版本之前,urllib2的api没有暴露timeout,可以通过更改Socket的全局timeout

import urllib2
import socket

socket.setdefaulttimeout(10)
urllib2.socket.setdefaulttimeout(10)

python2.6之后,urlopen函数提供了timeout设置

import urllib2

resuest = urllib2.Request('http://www.zhihu.com')
response = urllib2.urlopen(resuest, timeout=2)
html = response.read()
print html

获取http响应码

import urllib2

try:
    response = urllib2.urlopen('http://www.zhihu.com')
    print response.code
except urllib2.HTTPError as e:
    if hasattr(e, 'code'):
        print 'Error code:', e.code

重定向

import urllib2

response = urllib2.urlopen('http://www.zhihu.com')
isRedirected = response.geturl() == 'http://www.zhihu.com'  #检查重定向

自定义HTTPRedirectHandler类,不自动重定向

import urllib


class RedirectHandler(urllib.request.HTTPRedirectHandler):
    def http_error_301(self, req, fp, code, msg, headers):
        pass

    def http_error_302(self, req, fp, code, msg, headers):
        result = urllib.request.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, headers)
        result.status = code
        result.newurl = result.geturl()
        return result


opener = urllib.request.build_opener(RedirectHandler)
opener.open('http://www.zhihu.com')

Proxy代理设置

import urllib2

proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8087'})
opener = urllib2.build_opener(proxy,)
response = urllib2.urlopen('http://www.zhihu.com/')
print response.read()

2、httplib结合urllib实现http请求

创建HTTPConnection对象:class httplib.HTTPConnection(host[,port[,strict[,timeout[,source_address]]]])

发送请求:HTTPConnection.request(method,url[,body[,headers]])

获取响应:HTTPConnection.getresponse()

读取响应信息:HTTPResponse.read([amt])

获得指定头信息:HTTPResponse.getheader(name[,default])

获取响应头(header,value)元组的列表:HTTPResponse.getheaders()

获得底层socket文件描述符:HTTPResponse.fileno()

获得头内容:HTTPResponse.msg

获得头http版本:HTTPResponse.version

获得返回状态码:HTTPResponse.status

获得返回说明:HTTPResponse.reason

例子:

get请求

import httplib

conn = None
try:
    conn = httplib.HTTPConnection('www.zhihu.com')
    conn.request('GET', '/')
    response = conn.getresponse()
    print response.status, response.reason
    print '-' * 40
    headers = response.getheaders()
    for h in headers:
        print h
    print '-' * 40
    print response.msg
except Exception, e:
    print e
finally:
    if conn:
        conn.close()

post请求

import httplib,urllib

conn = None
try:
    params = urllib.urlencode({'name':'vfast','age':22})
    headers = {'Content-type':'application/x-www-form-urlencoded','Accept':'text/plain'}
    conn = httplib.HTTPConnection('www.zhihu.com',80,timeout=3)
    conn.request('POST','/login',params,headers)
    response = conn.getresponse()
    print response.getheaders()
    print response.status
    print response.read()
except Exception,e:
    print e
finally:
    if conn:
        conn.close()

 python爬虫与项目实战学习记录

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道 本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。 阅读详情

相关推荐

Figure 03人形机器人与Helix端到端控制系统:具身智能突破深度解析

2026年5月,Figure AI的Figure 03人形机器人在一场震撼业界的直播中完成了长达200小时的连续全自动作业,分拣近25万个包裹,零故障。这一里程碑式的成就标志着人形机器人正式从「实验室展示」迈入「规模化商用」阶段。本文深入剖析Figure 03的核心技术——Helix端到端神经网络控制系统,包括System 0/1/2三层架构、视觉运动策略、全身协同控制等关键技术,并提供完整的Python/Go代码示例,帮助开发者理解具身智能的核心原理与实现路径。关键词。

shao.bing的专栏 991

HTTPS网站发起HTTP请求

https网站发起的http请求会被blocked,不被允许,因此,通过设置nginx反向代理转发http请求。

heyYouU的博客 5117

基于Spring Boot在线远程考试系统的设计与实现

结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。目前的信息时代,对信息的管理趋于高效化,便捷化,这也是计算机大力普及所带来的便利,此程序软件在设备选用上,依靠的是比较大众的电脑设备,对电脑的配置没有过多要求,一般学校的计算机机房的电脑都可以满足程序开发需求,另外,开发出此款程序,让信息处理变得高效率,其所带来的高效益是远超程序开发的低成本的,因此程序开发的资金投入是可以忽略不计的。

ITbiyesheji的博客 1215

Http 请求的4种方式

1. RestTemplate RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 SpringBoot中先注册bean @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } // 或者 @Bean public RestTe

Tong_zhi的博客 1956

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

【Flow3D实战】从零构建水利冲淤模型:关键步骤与参数详解

本文详细介绍了使用Flow3D构建水利冲淤模型的关键步骤与参数设置技巧。从基础认知到前处理、计算设置和后处理,全面解析如何高效模拟水流与泥沙的相互作用,特别适用于桥墩冲刷、水库泄洪等工程场景。通过实战案例分享,帮助读者掌握Flow3D在水利工程中的精准应用,提升模型精度与计算效率。

weixin_42549723的博客 497

Http网络请求

在JDK的 java.net 包中已经提供了访问HTTP协议的基本功能的类:HttpURLConnection。HttpURLConnection是Java的标准类,它继承自URLConnection,可用于向指定网站发送GET请求、POST请求。它在URLConnection的基础上提供了如下便捷的方法:// 获取服务器的响应代码。// 获取服务器的响应消息。// 获取发送请求的方法。// 设置发送请求的方法。...

m0_60623666的博客 2027

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM(脉宽调制)技术是嵌入式系统中一项重要的控制技术,通过调节脉冲宽度来实现对模拟设备的精准控制。从LED亮度到电机速度,PWM的应用场景非常广泛。对于嵌入式学习者来说,理解PWM的工作原理、掌握其配置方法,不仅能提升编程能力,还能为更多复杂系统的开发打下坚实的基础。

SpringWJN的博客 6325

使用socket实现http服务器和发送http请求

注:本文并没有实现完整的http服务器和http网络请求,主要是提供思路 先上一个简单的get请求和响应的代码,代码使用idea测试过,使用时先运行服务端,然后再运行客户端测试,服务端测试也可以通过使用浏览器输入localhost:5050进行测试 服务端 public class LiteHttpServerTest { public static void main(String[...

Ryu_Jin的博客 2462

企业数字化转型解决方案架构设计:一个五维全景视角

本文系统探讨了企业数字化转型的架构设计框架,提出五维协同模型:企业架构作为战略罗盘,业务架构聚焦价值创造,应用架构实现能力载体,数据架构提供智能燃料,技术架构奠定基础支撑。文章深入分析了各架构域的核心要素、设计原则及相互关系,并指出数字化转型需通过渐进路径,结合战略引领、技术赋能和组织变革,构建有机统一的架构体系。该框架为企业应对数字化复杂性提供了系统性方法论,强调从整体视角实现技术与业务的深度融合。

金牌架构师 1256

JavaScript - Blob / File / base64 使用场景介绍与相互转换

前言 本文首先介绍一下这三种对象使用场景,最后介绍下它们之间互转格式的解决方案。 您前端一旦涉及到文件或图片上传到服务器, 就势必离不了Blob/File/base64三种主流的类型。 Blob MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 您可以观察到,像一些图片处理插件(例如有名的vue-cropper)图片裁剪插件, 它们将图片处理完毕后,都将使用blob对象返回处理好的图片,供开发者用于上传服务器。

🏆 前端领域优质创作者 4492

【HttpURLConnection】使用 HttpURLConnection 后台模拟实现 HTTP 请求

在 SpringBoot 工程中,通过 HttpURLConnection 类来实现 HTTP 请求吧。 类 HttpURLConnection 是 JDK 自带的。 它的应用场景:在自己的工程中,你想调用第三方接口(外部接口)来获取数据,那么 HttpURLConnection 类就可以实现。接下来通过两个小案例来进行实现吧。 开发步骤: 先开发外部接口 再开发内部接口 在内部接口中,通过类 HttpURLConnection 去调用外部接口 为了测试方便,我这里就将外部接口、内部接口,全写在通过一个

sco5282的博客 2306

Three.js 完整实战项目:构建一个 3D 商品展示空间

Three.js 作为强大的 WebGL 框架,广泛应用于交互式 3D 场景开发,尤其适合创建沉浸式商品展示空间。本文将通过一个完整的实战项目,展示如何构建一个 3D 商品展示空间,涵盖项目架构、资源组织、多模型切换、交互热点绑定、移动端适配和帧率优化。项目以展示虚拟商品(如家具或电子产品)为核心,结合用户交互,基于 Vite、TypeScript 和 Tailwind CSS,支持 ES Modules,确保响应式布局,遵循 WCAG 2.1 可访问性标准。本文适合希望通过综合项目掌握 Three.js

zimin的专栏 1462

拦截器实现http请求访问本地图片

本文来记录下拦截器实现http请求访问本地图片 文章目录概述 概述

wh柒八九的博客 335

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

php带帽接口_php的curl携带header请求头信息实现http访问的方法

导读:curl请求时添加请求头信息可以模拟真人操作,不容易被当成是爬虫机器人(采集),从而可以绕过Incapsula等安全验证机制。1、首先使用浏览器(示例使用的是火狐浏览器)访问接口网址,使用F12调试,查看请求头信息,如下:2、实现代码:/*** 开始访问请求* @param $url* @return bool|string*/function fetch_url($url) {$heade...

weixin_39851887的博客 298

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Openresty之实现http访问请求

在openresty里面可能有访问其他服务的需求,我们当时是需要定时去另外一个服务拉取一些配置信息,然后来改一下配置。lua代码实现http访问请求。

小丑鱼的专栏 2524

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ESP8266实现http请求访问远程服务器

之前用esp8266进行了一般的tcp连接,现在需要做一个可以直接访问远程服务器的项目,因此,研究了一下如何用esp8266实现http协议,由于网上的资料很杂,而且好像都没有说的很清楚。这里做出一个总结,关于之前的命令见下面的网址。 https://blog.youkuaiyun.com/qq_34020487/article/details/100904978 由于http协议处在tcp/...

AlwaysSun的博客 4万+

Java实现Http的Post、Get、代理访问请求

Java实现Http的访问请求。包含基本的Get访问、Post访问。Post包含使用代理模式访问 package com.nit.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java....

weixin_33827590的博客 953

[Java学习] java实现http的Post、Get、代理访问请求

本文实例讲解了java实现http的Post、Get、代理访问请求的详细代码片段,分享给大家供大家参考,具体内容如下 package com.snowfigure.kits.net; http://www.ynmxzx.com/sjxc/20160621/3729.html import java.io.BufferedReader; import java.io.IO

hxm102581的博客 1266

在Nginx中实现访问HTTP请求时自动跳转到HTTPS请求

在Nginx中实现访问HTTP请求时自动跳转到HTTPS请求可以通过修改Nginx配置信息来实现。

IT_WEH_coder的博客 6192

nginx实现访问http请求时自动跳转到https请求

nginx 实现访问http请求时自动跳转到https安全请求,在某些单体web应用上也可以解决应用由https重定向到http时的请求路径错误问题;比如若依的单体版本在部署之后上层通过nginx做入口转发,在应用超时刷新重定向到登录页面时,https请求重定向到http会出现路径不可访问的问题。

不靠谱助手的博客 1615

手写tomcat,实现http访问,解析get请求参数

手写tomcat,实现静态网站部署

qq445829096的博客 571

php的curl携带header请求头信息实现http访问

实现代码: <?php /** * 开始访问请求 * @param $url * @return bool|string */ function fetch_url($url) { $header = FormatHeader($url); $useragent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0'; $timeout= 120; $ch = curl_i.

美奇软件开发工作室 5047

串口发送信息给8266服务器,ESP8266实现http请求访问远程服务器

之前用esp8266进行了一般的tcp连接,现在需要做一个可以直接访问远程服务器的项目,因此,研究了一下如何用esp8266实现http协议,由于网上的资料很杂,而且好像都没有说的很清楚。这里做出一个总结,关于之前的命令见下面的网址。https://blog.youkuaiyun.com/qq_34020487/article/details/100904978由于http协议处在tcp/ip协议的应用层,t...

weixin_28731231的博客 1216

HTML实现HTTP-POST请求访问SpringMVC

首先: springMVC对于命名不规范的参数是有容忍度的。 建议参数名严格按照规范编写-同时注意getter,setter方法(这里面的坑很深,感兴趣的可以进去走走) 这里示例后端需要接收的参数名为 'ID' , 'Type' ; 若是get请求,则直接封装为 " url?ID=123&Type=ACCEPT" 但是这里需要使用POST请求, 尝试直接使用 <form a...

ChyoD1811的博客 1791

esp8266 php服务器,ESP8266实现http请求访问远程服务器

以前用esp8266进行了通常的tcp链接,如今须要作一个能够直接访问远程服务器的项目,所以,研究了一下如何用esp8266实现http协议,因为网上的资料很杂,并且好像都没有说的很清楚。这里作出一个总结,关于以前的命令见下面的网址。html因为http协议处在tcp/ip协议的应用层,tcp协议工做在传输层,只须要在tcp传输层中按照http协议中的数据格式,发送数据就能够完成http传输数据。...

weixin_33628316的博客 677
上一篇: win10优化
下一篇: docker架构和虚拟机的架构对比
linuxvfast
博客等级 码龄10年 6粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值