我尝试用urllib2执行一个简单的POST请求.但是服务器响应表明它收到一个简单的GET.我检查了传出请求的类型,但它设置为POST.
为了检查服务器是否像我期望的那样,我尝试使用连接到url的(以前的POST-)数据执行GET请求.这给了我预期的答案.
有人知道我误解了什么吗?
def connect(self):
    url = 'http://www.mitfahrgelegenheit.de/mitfahrzentrale/Dresden/Potsdam.html/'
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    header = { 'User-Agent' : user_agent }
    values = {
      'city_from' : 69,
      'radius_from' : 0,
      'city_to' : 263,
      'radius_to' : 0,
      'date' : 'date',
      'day' : 5,
      'month' : 03,
      'year' : 2012,
      'tolerance' : 0
    }
    data = urllib.urlencode(values)
    # req = urllib2.Request(url+data, None, header) # GET works fine
    req = urllib2.Request(url, data, header)  # POST request doesn't not work
    self.response = …在我的一个控制器操作结束时,我需要重定向到只接受put请求的页面.我一直试图弄清楚如何让redirect_to使用put请求但没有成功.
这可能吗?或者还有另一种方法来实现这一目标吗?
这里有一点非正统的问题:
我目前正试图用一些自定义模块打破Apache.
产生测试的是Apache在内部将其认为太大的请求(例如1 MB垃圾)转发给适当连接的模块,迫使他们处理垃圾数据 - 并且自定义模块中缺乏处理导致Apache完整火上浇油 哦,哎哟,哎哟.
幸运的是,这个特定的问题已得到解决,但问题是否可能存在其他类似的漏洞.
现在我有一个工具供我使用,它允许我向服务器发送原始HTTP请求(或者更确切地说,原始数据通过已建立的TCP连接,如果它遵循一个形式,可以解释为HTTP请求,例如"GET" ......")我想要提出其他想法.(像Slowloris和Nkiller2这样的TCP级攻击目前不是我的重点.)
有没有人有一些好主意如何将服务器的自定义模块混淆到服务器自焚的程度?
我不认为自己是一个非常好的测试人员(我这样做是因为必要和缺乏人力;我很遗憾甚至没有基本的掌握Apache内部能够帮助我),这就是为什么我'希望有一个有见地的回应或两三个.也许你们有些人为自己的项目做过类似的测试?
(如果stackoverflow不是这个问题的正确位置,我道歉.不知道还能把它放在哪里.)
我正在寻找一种方法,使用标准Net :: HTTP库为每个GET请求使用不同的IP地址.服务器有5个IP地址,并假设某些API在达到每个IP的请求限制时阻止访问.所以,只有这样做 - 使用另一台服务器.我在ruby docs中找不到任何关于它的东西.
例如,curl允许您将其附加到特定的IP地址(在PHP中):
$req = curl_init($url)
curl_setopt($req, CURLOPT_INTERFACE, 'ip.address.goes.here';
$result = curl_exec($req);
有没有办法用Net :: HTTP库做到这一点?作为替代 - CURB(红宝石卷曲绑定).但这将是我将尝试的最后一件事.
建议/想法?
PS使用CURB的解决方案(带有脏测试,ip被替换):
require 'rubygems'
require 'curb'
ip_addresses = [
  '1.1.1.1',
  '2.2.2.2',
  '3.3.3.3',
  '4.4.4.4',
  '5.5.5.5'
]
ip_addresses.each do |address|
  url = 'http://www.ip-adress.com/'
  c = Curl::Easy.new(url)
  c.interface = address
  c.perform
  ip = c.body_str.scan(/<h2>My IP address is: ([\d\.]{1,})<\/h2>/).first
  puts "for #{address} got response: #{ip}"
end
如何通过JS和服务器端的AJAX调用传递复合JSON结构,在python中将其读作"非常相似"的数据结构?
我知道可以使用json格式(simplejson等),但我不知何故觉得QueryDict本身在我的情况下格式错误或重新格式化?
例:
通过AJAX向Django视图传递JSON对象[{"id":1},{"id":2},{"id":3}]的数组时,QueryDict的格式为:
POST:<QueryDict: {u'json_data[0][id]': [u'1'], u'type': [u'clone'], 
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'], 
u'json_data[1][id]': [u'2'], u'json_data[2][id]': [u'3']}>
我如何迭代json_data?
我希望得到这样的东西:
POST:<QueryDict: {u'json_data': [{u'id': [u'1']}, {u'id': [u'2']}, {u'id': [u'3']}]},
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'], u'type': [u'clone']>
这样我就可以将QueryDict作为字典访问并将json_data作为列表检索并按特定顺序处理它:可能只是按顺序列表顺序遍历它们.就像是:
ret = request.POST
for item in ret['json_data']:
    process(item['id'])
实际上,进入process()的值可能是另一个键值对的字典,而不仅仅是一个数字(1,2,3等)
使用Javascript:
var test = [{"id": 1},{"id": 2},{"id": 3}];
$.post(
    "/insert_tc",
    {
      json_data: test,
      "type": 'clone',
      "csrfmiddlewaretoken": $csrf_token
    },  
    function(json) {
        //CALLBACK
    },
    "json"
);  
views.py:
def insert_tc(request):
    if request.method == 'POST':       
    ret = request.POST
    type = ret['type']
    list = ret.getlist(ret)
但是list返回空[] …
下面是一个示例HTTP 1.1调用,请求单个页面:
GET /jq.js HTTP/1.1
Host: 127.0.0.1
Accept: */*
我理解使用HTTP Pipelining,可以在不中断连接的情况下发送多个请求.
有没有办法使用与Node.js中的IP不同的IP发送HTTP请求?
我想从之前选择的IP发送请求,而不是从服务器的IP或我的计算机的IP发送请求.
我知道Tor Project会进行这种操作,但是我找不到Tor用来做这些东西的库.
是否有任何API或Node.js模块用于处理Node.js中的这种私人浏览?
使用此curl命令,我能够从Bash中获取我正在寻找的响应
curl -v -u z:secret_key --proxy http://proxy.net:80  \
-H "Content-Type: application/json" https://service.com/data.json
它帮助我在Python中制定我的代码,但我需要通过代理提出请求.但是,即使在提供适当的代理时,它也无法正常工作.也许我只是没有看到什么?
>>> requests.request('GET', 'https://service.com/data.json', \
>>> headers={'Content-Type':'application/json'}, \ 
>>> proxies = {'http' : "http://proxy.net:80",'https':'http://proxy.net:80'}, \
>>> auth=('z', 'secret_key'))
此外,在同一个python控制台上,我可以使用urllib发出请求,使其成功.
>>> import urllib
>>> urllib.urlopen("http://www.httpbin.org").read()
---results---
即使只在非https地址上尝试请求也无法正常工作.
>>> requests.get('http://www.httpbin.org')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.6/site-packages/requests/api.py", line 79, in get
   return request('get', url, **kwargs)
File "/Library/Python/2.6/site-packages/requests/api.py", line 66, in request
    prefetch=prefetch
File "/Library/Python/2.6/site-packages/requests/sessions.py", line 191, in request
    r.send(prefetch=prefetch)
File "/Library/Python/2.6/site-packages/requests/models.py", line 454, …我正在使用Jetty Web服务器和Jersey进行REST处理.
我定义了:
@POST
@Path("/sendMessage")
@Consumes ({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public Response sendMessage(@Context final UriInfo uriInfo) 
{
    logger.debug("sendMessage:");
    System.out.println("Received POST!");
    return Response.status(Response.Status.OK).build();
}
但是,当我发送http请求时http://localhost:8080/hqsim/sendMessage,服务器返回415代码.
这就像是不允许通话.我该如何解决这个错误?
我正在使用Python请求.一切都很好但今天我得到了这个奇怪的错误:
[...]
File "/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/requests/models.py", line 321, in full_url
    netloc = netloc.encode('idna').decode('utf-8')
LookupError: unknown encoding: idna
什么想法可能是错的?我正在使用来自brew的Python 2.7.2.